Czy można zmienić nazwę ograniczenia w Postgres? Mam PK dodane z:
ALTER TABLE contractor_contractor ADD CONSTRAINT commerce_contractor_pkey PRIMARY KEY(id);
I chcę mieć dla niego inną nazwę, aby był spójny z resztą systemu. Czy mam usunąć istniejące ograniczenie PK i utworzyć nowe? A może istnieje „miękki” sposób na zarządzanie tym?
Dzięki!
postgresql
constraints
Milen A. Radev
źródło
źródło
pg_catalog
, iterować po niejLOOP
i użyć dynamicznego zapytania do zmiany nazwy.Okazało się, że klucze podstawowe często pozostają w tyle za nazwą tabeli głównej. Ten skrypt pomógł nam zidentyfikować i naprawić problemy.
select table_name, constraint_name , 'ALTER TABLE ' || table_name || ' RENAME CONSTRAINT ' || constraint_name || ' TO ' || left(table_name, 58) || '_pkey;' from information_schema.table_constraints tc where constraint_type = 'PRIMARY KEY' and constraint_name <> left(table_name, 58) || '_pkey';
Znajduje to wszystkie tabele, w których nazwa klucza podstawowego nie jest już wzorcem „domyślnym” (
<tablename>_pkey
), i tworzy dla każdej z nich skrypt zmiany nazwy.Limit 58 znaków powyżej w powyższym kodzie ma uwzględniać maksymalny rozmiar nazw ograniczeń (63 bajty).
Oczywiście sensowne sprawdzenie, co jest zwracane przed uruchomieniem. Mam nadzieję, że to pomoże innym.
źródło