Ich möchte eine Sequenz zu einer Spalte hinzufügen, die möglicherweise bereits Daten haben, also versuche ich es über alles hinaus, was bereits da ist. Unter der Annahme, es bereits Daten vorhanden sind, würde Ich mag zu tun haben es so aus:PostgreSQL: Starten einer Sequenz bei MAX (the_column) +1
CREATE SEQUENCE my_sequence MINVALUE 1000000 START
(SELECT MAX(id_column) FROM my_table) OWNED BY my_table.id_column;
aber es hält sterben bei (
Syntaxfehler behauptet. Es ist wie der Startwert muss kalt harte Zahlen sein - nichts symbolisch.
Natürlich wäre eine noch bessere Lösung, wenn die Sequenz intelligent genug wäre, um doppelte Werte zu vermeiden, da id_column
eine eindeutige Einschränkung hat - deshalb mache ich das. Aber von dem, was ich sagen kann, ist das nicht möglich.
Ich habe auch versucht die START
Skipping und dann tun:
ALTER SEQUENCE my_sequence RESTART WITH (SELECT max(id_column)+1 FROM my_table);
aber auch hier nicht wie auf symbolische Startwerte scheint.
Ich benutze PostgreSQL 9.4 aber einige unserer Kunden verwenden so primitive Dinge wie 8.3.
Erstaunlich ... Ich war über diese bearbeiten hinzufügen 'MAX (id_spalte) + 1 ', so dass die Sequenz über die beginnen würde max, aber als ich es getestet habe, hat es wirklich von 1 nach der größten id_column begonnen! Ich denke also, START 1000000 bedeutet wirklich "start at 1000001". – Opux