sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur lägger man till på radera kaskadbegränsningar?

Jag är ganska säker på att du inte bara kan lägga till on delete cascade till en befintlig främmande nyckel-begränsning. Du måste släppa begränsningen först och sedan lägga till rätt version. I standard SQL tror jag att det enklaste sättet att göra detta är att

  • starta en transaktion,
  • släpp den främmande nyckeln,
  • lägg till en främmande nyckel med on delete cascade och slutligen
  • besluta transaktionen

Upprepa för varje främmande nyckel som du vill ändra.

Men PostgreSQL har ett icke-standardiserat tillägg som låter dig använda flera begränsningssatser i en enda SQL-sats. Till exempel

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

Om du inte känner till namnet på den främmande nyckelbegränsningen du vill ta bort, kan du antingen slå upp den i pgAdminIII (klicka bara på tabellnamnet och titta på DDL, eller expandera hierarkin tills du ser "Begränsningar"), eller så kan du fråga informationsschemat.

select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null


  1. När ska jag använda ett sammansatt index?

  2. Ett exempel för att demonstrera sårbarheten hos SQL-injektion och dess förebyggande i Oracle

  3. Kör SQL-skript i Multitenant-miljö med catcon.pl

  4. Hur FORMAT()-funktionen fungerar i SQL Server (T-SQL)