1

Temat: globalny identyfikator dla całej bazy

Dzień dobry

W bazie mam kilka tabeli, w każdej z nich mogę zdefiniować unikalny identyfikator. Czy jest możliwe zdefiniowanie unikalnego identyfikatora dla kilku tabeli? Jeśli tak, to proszę o wyjaśnienie.
Z góry dziękuję za pomoc.
dstroj

2

Odp: globalny identyfikator dla całej bazy

Rozumiem, że chcesz aby w kilku tabelach wszystkie identyfikatory wykorzystywały jedną sekwencję co spowoduje, że wartości we wszystkich rekordach tych pól kluczy będą unikalne w obrębie wszystkich tabel

Najpierw tworzysz sekwencje

CREATE SEQUENCE public.moj_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

potem modyfikujesz pola kluczy wszystkich tabel (kolumny nie muszą się we wszystkich tabelach nazywać tak samo)

ALTER TABLE public.tab_1 ALTER COLUMN id SET DEFAULT nextval('moj_seq'::regclass);
ALTER TABLE public.tab_2 ALTER COLUMN id SET DEFAULT nextval('moj_seq'::regclass);
...
ALTER TABLE public.tab_n ALTER COLUMN id SET DEFAULT nextval('moj_seq'::regclass);

Musisz pamiętać, że pola kluczy powinny być najlepiej tego samego typu (choć system wymaga tylko by był to typ numeryczny, najlepiej by był to typ, który jest wstanie pomieścić wartość max sekwencji), w insertach i updata-ch nie modyfikuj tych pól niech zadziała wartość domyślna

3

Odp: globalny identyfikator dla całej bazy

--
The best thing about modern society is how easy it is to avoid contact with it.