PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : postgresql - dynamische default werte bei insert



revak
11-04-2005, 16:24
Hi,
ich suche eine Möglichkeit (Postgresql), beim insert in eine Tabelle bestimmte Spalten automatisch füllen zu lassen. Allerdings nicht statisch mit einem default-Wert, sondern mit einer Zahlensequenz. Also sowas in der Art hier:
Create Table xyz (
...
ID numeric(3) default (select max(id)+1 from xyz)
...
)
Damit bei jedem neuen insert, die neue ID automatisch berechnet wird. Ich weiss, dass oben angegebenes Statement falsch ist, soll nur illustrieren, wie ich das meine. :-)

Wie kann man das lösen?

Christoph
11-04-2005, 16:30
Generell kannst Du auch rosa Rüschen eintragen indem Du in der DEFAULT Klausel eine selbstdefinierte Stored Procedure aufrufst.

Für Deinen Spezialfall gibts bereits den Typ SERIAL. ANsonsten schau mal in der PostgreSQL-Doku unter SEQUENCES.

revak
11-04-2005, 21:34
Tnx, habs mit einer Sequence und dem nextval-Aufruf gelöst, das ist es, was ich wollte.

elrond
13-04-2005, 11:34
die Sequence auf alle fälle das Mittel der Wahl denn bei vielen zugiffen get maxid+1 irgendwann daneben. Außerdem ist der zugriff auf die seq um längen performanter.