Birincil anahtarların genellikle ana tablo adının gerisinde kaldığını gördük. Bu komut dosyası, sorunlu olanları tanımlamamıza ve düzeltmemize yardımcı oldu.
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';
Bu, birincil anahtar adının artık "varsayılan" desen ( <tablename>_pkey
) olmadığı tüm tabloları bulur ve her biri için bir yeniden adlandırma betiği oluşturur.
Yukarıdaki kodda yukarıdaki 58 karakterlik sınır, kısıtlama adlarının (63 bayt) maksimum boyutunu hesaba katmak içindir.
Açıkçası, çalıştırmadan önce neyin geri döndüğünü kontrol edin. Umarım başkaları için yararlıdır.