Temat: typ SERIAL a nextval
Witam...
Gdyby ktoś miał niepewność co do typu SERIAL dla podobnej sytuacji...
CREATE TABLE a
(id_a SERIAL, .....);
Czy wprowadzenie danych do tabeli z kolumną serial (np. zaciągnięcie danych z innej tabeli) nie pozmienia tych wprowadzanych przez zastąpienie ich np. z 444, 567, 222, 123 na 1,2,3,4 ?
Sprawdzono, że nie pozmienia
Ale tu jest mały haczyk, bo jak dane w kolumnie o typie SERIAL (są primary key) nie mogą się powtarzać, to jak po zaciągnięciu danych będę dodawać kolejny rekord już bez podania wartości dla kolumny SERIAL (żeby się samoczynnie nadał kolejny numer), to wstawi mi 1 a to może być powtórzenie! czyli nie do przyjęcia! (zaczynam mieć wątpliwość czy mi się osobiście coś nie pomyliło, to mnie naprostujcie )
SQLException: ERROR: duplicate key violates unique constraint "..."
W każdym razie jak zrobię
ALTER TABLE b
ADD COLUMN id_b SERIAL;
a potem wyświtlam sobie na konsoli jak to wygląda robiąc: \d b
to wypisuje mi
id_b integer not null default nextval ('b_id_b_seq' ::regclass)
zatem ustawiam tę sekwencję 'b_id_b_seq' od numeru ostatniego w tabeli np. 100
ALTER SEQUENCE b_id_b_seq START 101;
i to sprawi, że samoczynnie dopisujące się numery w tej kolumnie będą od 101 ale nie będą się powtarzać z tymi zaciągniętymi.
Czy mozna to zrobić lepiej?
Jak możecie dodać coś w temacie, to zapraszam