# Postgres, sql: Inkrementierung allgemein und bis zu einem bestimmten Wert



## al_si (30. Jan 2013)

Folgende Situation

(Ich nutze PostgreSQL 9.2)

2 tables:

*Punktekarte*
id (integer),
benoetigte_punkte (integer)

*Nutzer_Punktekarte*
punktekarte_id (integer) ,
punkte (integer)

2 Fragen:
Durch ein INSERT INTO Nutzer_Punktekarte.... wuerde ich gerne den Wert von punkte einfach nur um 1 erhoehen (inkrementieren), allerdings nur bis er die Anzahl der benoetigte_punkte gesammelt hat.

1.Wie kann ich ueberhaupt eine Inkrementierung in sql ausdruecken, also das der aktuelle wert von punkte um 1 erhoeht wird ohne das ich erst per MAX auslese?
2. Und wenndas moeglich ist, kann ich es auch mit der anderen Bedingung (s.o.) vereinen?

Ich bin fuer jede Hilfe dankbar.


----------



## Fab1 (30. Jan 2013)

Hi,

eine incrementierung erhälst du in PostgreSQL mit dem Datentyp Serial. Dies würde dem auto_increment von MySQL entsprechen.

Wegen dem zweiten kann ich dir nicht helfen. Evtl. nach jedem Insert INTO die Punkte extra abfragen und dann halt entsprechend weitermachen oder nicht. Eine schönere Lösung fällt mir da auch nicht ein.


----------



## al_si (30. Jan 2013)

Serial ist mir bekannt, aber kann ich damit auch die Höchstgrenze so einstellen, dass er den Wert von benoetigte_punkte aus Punktekarte nicht überschreitet? Bzw. Bei Überschreitung eine neue Punktekarte anlegt.


----------



## Camino (30. Jan 2013)

Ob bei serial eine Höchstgrenze eingestellt werden kann, weiss ich nicht. Aber evtl. könntest du mit dem CASE-Ausdruck arbeiten, was in etwa einem if/else entspricht. Dadurch lassen sich Werte abfragen und dementsprechend darauf reagieren, wenn z.B. ein bestimmter Wert erreicht ist.


----------



## al_si (30. Jan 2013)

Danke für den Stichpunkt, ich werd mich mal über den CASE-Ausdruck informieren.


----------



## Gast2 (30. Jan 2013)

Oder eine Stored Procedure aufrufen...


----------

