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

Как да добавя ограничения за каскада за изтриване?

Почти съм сигурен, че не можете просто да добавите on delete cascade към съществуващо ограничение за външен ключ. Първо трябва да премахнете ограничението, след това да добавите правилната версия. В стандартния SQL смятам, че най-лесният начин да направите това е да

  • започнете транзакция,
  • пуснете външния ключ,
  • добавете външен ключ с on delete cascade и накрая
  • извършете транзакцията

Повторете за всеки външен ключ, който искате да промените.

Но PostgreSQL има нестандартно разширение, което ви позволява да използвате множество клаузи за ограничения в един SQL израз. Например

alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
   foreign key (gid)
   references games(gid)
   on delete cascade;

Ако не знаете името на ограничението на външния ключ, което искате да премахнете, можете или да го потърсите в pgAdminIII (просто щракнете върху името на таблицата и погледнете DDL, или разширете йерархията, докато видите "Ограничения"), или можете да направите заявка за информационната схема.

select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null


  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 13 libpq sslpassword

  2. pgDash Diagnostics Алтернативи - PostgreSQL управление на заявки с ClusterControl

  3. Вмъкване при дублирана актуализация в PostgreSQL?

  4. Шаблони и модификатори за числово форматиране в PostgreSQL

  5. Как да отстраня грешки в запаметените процедури на postgresql?