sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan tilføjes slettekaskadebegrænsninger?

Jeg er ret sikker på, at du ikke bare kan tilføje on delete cascade til en eksisterende fremmednøglebegrænsning. Du skal først slippe begrænsningen og derefter tilføje den korrekte version. I standard SQL tror jeg, at den nemmeste måde at gøre dette på er at

  • start en transaktion,
  • slip fremmednøglen,
  • tilføj en fremmednøgle med on delete cascade , og til sidst
  • forpligte transaktionen

Gentag for hver fremmednøgle, du vil ændre.

Men PostgreSQL har en ikke-standard udvidelse, der lader dig bruge flere begrænsningsklausuler i en enkelt SQL-sætning. For eksempel

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

Hvis du ikke kender navnet på den fremmednøgle-begrænsning, du vil slette, kan du enten slå den op i pgAdminIII (bare klik på tabelnavnet og se på DDL, eller udvide hierarkiet, indtil du ser "Begrænsninger"), eller du kan forespørge på informationsskemaet.

select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null


  1. Udvikling af de nye Microsoft SQL Server ODBC- og OLEDB-drivere

  2. Nye metadata-kun kolonneændringer i SQL Server 2016

  3. Postgres Venstre Sammenføj med hvor tilstand

  4. Sådan opretter du PL/SQL svag ref-markør i Oracle-databasen