sql >> Databáze >  >> RDS >> PostgreSQL

Jak přidat nebo odstranit kaskádová omezení?

Jsem si docela jistý, že nemůžete jednoduše přidat on delete cascade na existující omezení cizího klíče. Nejprve musíte zrušit omezení a poté přidat správnou verzi. Ve standardním SQL se domnívám, že nejjednodušší způsob, jak toho dosáhnout, je

  • zahájit transakci,
  • uvolněte cizí klíč,
  • přidejte cizí klíč pomocí příkazu on delete cascade a nakonec
  • potvrdit transakci

Opakujte pro každý cizí klíč, který chcete změnit.

Ale PostgreSQL má nestandardní rozšíření, které vám umožňuje používat více omezujících klauzulí v jednom příkazu SQL. Například

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

Pokud neznáte název omezení cizího klíče, které chcete zrušit, můžete jej vyhledat v pgAdminIII (stačí kliknout na název tabulky a podívat se na DDL, nebo rozbalit hierarchii, dokud neuvidíte „Omezení“), nebo se můžete dotázat na informační schéma.

select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null


  1. Chyba přihlášení k serveru SQL:přihlášení se nezdařilo pro uživatele 'NT AUTHORITY\SYSTEM'

  2. Jak funguje funkce RPAD() v MySQL

  3. Jak implementovat LIMIT s SQL Server?

  4. Obnovte kopii vaší databáze