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.