PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да променя ПРЕПОРЪЧКИ в PostgreSQL?

Вътрешните зависимости между таблици и/или други обекти никога не са обвързани с името на обекта. Вътрешно всеки обект се съхранява в каталожна таблица и OID (вътрешен първичен ключ) на обекта се използва за всичко друго.

Съответно, ВЪНШЕН КЛЮЧ справката се съхранява в каталожните таблици pg_constraint (самото ограничение, включително името му) и pg_depend . Промяната на имената на таблиците въобще няма да наруши функционалността .

Име на ограничението остава непроменено. Можете да пренебрегнете това или може да искате да преименувате ограничението, така че да не е подвеждащо.

Въпреки това, тъй като не сте посочили име на ограничение по време на създаване, системата е избрала по подразбиране, което е example2_example1fk_fkey във вашия случай, освен ако името не е взето. Няма препратка към посочената таблица име. Но името на колоната вероятно ще трябва да се промени и във вашия пример. И това се използва в името на ограничението.

ALTER TABLE example2 RENAME example1fk TO example3fk;  -- rename column

В Postgres 9.2 или по-нова версия можете просто да преименувате ограничението (като dequis коментира ):

ALTER TABLE example2 RENAME CONSTRAINT example2_example1fk_fkey TO example2_example3fk_fkey;

В по-стари версии трябва да премахнете и да създадете отново ограничението, за да го преименувате, най-добре в един израз:

ALTER TABLE example2  -- rename constraint
   DROP CONSTRAINT example2_example1fk_fkey
 , ADD  CONSTRAINT example2_example3fk_fkey FOREIGN KEY (example3fk)
      REFERENCES example3 (id) DEFERRABLE INITIALLY DEFERRED;

Подробности в ръководството.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Индексиране на външни ключове в Postgresql

  2. Не може да се свърже с PostgreSQL Remotely на екземпляр на Amazon EC2 с помощта на PgAdmin

  3. Буквено-цифрово сортиране без регистър в postgres

  4. Rails:Как да използвате обхват за намиране на елемент в масив от масиви

  5. Намерете размера на байтовете на ред в PostgreSQL