Verständnisfrage: setval() und SEQUENCE

Guten Morgen einmal mehr.

Folgende Ausgangslage: Ich hab hier knapp 480 Tabellen und ca. 90 zu erstellende SEQUENCEs. Die SEQUENCE fängt meist nicht bei 1 an, da bereits einige viele Datensätze in den Tabellen vorhanden sind.

Nun zu meiner Frage. Ich möchte gerne wissen, wie es eleganter ist, den Startwert der SEQUENCE zu erstellen. Macht es Sinn, direkt bei Erstellung der SEQUENCE per start den Wert mitzugeben oder sollte man lieber die SEQUENCE mit Startwert 1 erstellen und im Nachhinein per setval() den korrekten Startwert setzen?

Und dann noch so nebenbei gefragt: angenommen, ich nutze die Variante CREATE SEQUENCE mit start != 1 und möchte gleich konkret den korrekten Startwert setzen. Was müsste ich dort eintragen, wenn ich z.B als letzten SERIAL 456 verwendet habe? Quasi dass als nächstes 457 genommen wird.

Danke und Gruß schon mal.

CaptnUnterhose

PS: Und ja, ich habe gestern sehr ausdauernd die entsprechenden Dokus gelesen.

Fragen dieser Art kann man bequem auslosen.


Und dann noch so nebenbei gefragt: angenommen, ich nutze die Variante CREATE SEQUENCE mit start != 1 und möchte gleich konkret den korrekten Startwert setzen. Was müsste ich dort eintragen, wenn ich z.B als letzten SERIAL 456 verwendet habe? Quasi dass als nächstes 457 genommen wird.

Danke und Gruß schon mal.

CaptnUnterhose

PS: Und ja, ich habe gestern sehr ausdauernd die entsprechenden Dokus gelesen.

Ich kopiere mal aus der Doku:

SELECT setval('foo', 42);           Next nextval will return 43
SELECT setval('foo', 42, true);     Same as above
SELECT setval('foo', 42, false);    Next nextval will return 42

und hoffe, es gelingt Dir, 42 gegen 456 auszutauschen.


Andreas

Mahlzeit würde ich mal sagen.

Laut der Antwort würde ich daraus schließen, dass es im Prinzip scheinbar Wurst ist, wie mans macht. Zumindest deute ich das so.

Und ja: den Wert bekomme ich ersetzt :smiley: .

Besten Dank dafür und Greetz

CaptnUnterhose