Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przynależność sekwencji
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
wpaski
Witam, czy da się sprawdzić do jakiej tabeli/tabel należy dana sekwencja? Wiem że domyślny schemat (nazwy sekwencji) to nazwatabeli_nazwakolumny_seq ale czy da się sprawdzić to innym sposobem? no bo np. sekwencja może być inaczej nazwana, a mamy w bazie 100 tabel i 100 sekwencji i teraz trzeba ręcznie sprawdzać która sekwencja jest do której tabeli?
mmmmmmm
Coś w ten deseń:
  1. SELECT attname kolumna, objid::regclass obiekt, refobjid::regclass::text tabela
  2. FROM pg_depend d JOIN pg_attribute a ON a.attrelid = d.refobjid AND a.attnum = d.refobjsubid JOIN pg_class c ON c.relkind='S' AND c.relfilenode=objid
  3. WHERE refobjid::regclass::text='nazwa tabeli'

Dostajesz w wyniku kolumnę, nazwę sequencera i tabelę...
Tylko, że wiesz, że jeden seq może być do N tabel ... ? smile.gif
Crozin
Warto też zaznaczyć, że sekwencja może być wykorzystana spoza bazy danych - w sumie dosyć popularna technika, gdzie to aplikacja zajmuje się nadawaniem identyfikatorów.
wpaski
mmmmmmm dzięki, natomiast nie rozumiem jednej rzeczy
po usunięciu sekwencji (kaskadowo)i dodaniu ich ponownie Twój kod nie działa - nic nie znajduje, natomiast gdy wykonuję
Kod
SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';

znajduje dodane przezemnie sekwencje

czemu tak sie dzieje?


edit:
juz wiem trzeba dodac:
Kod
ALTER SEQUENCE nazwatabeli_nazwakolumny_seq OWNED BY nazwatabeli.id;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.