sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur gör man en kaskaduppdatering?

I Postgres (och andra RDBM) gäller kaskaduppdateringar uteslutande för främmande nycklar. Exempel:

create table groups (
    group_id int primary key
);
    
create table users (
    user_id int primary key, 
    group_id int references groups on update cascade
);

insert into groups values (1);
insert into users values (1, 1);
update groups set group_id = 10 where group_id = 1;

select * from users;

 user_id | group_id 
---------+----------
       1 |       10
(1 row) 

Faktum är att andra alternativ inte behövs. Om du känner att du behöver göra detta för en kolumn som inte är en främmande nyckel, betyder det att modellen är dåligt utformad (den är inte normaliserad ). Å andra sidan löser inte möjligheten till selektiv kaskaduppdatering av främmande nycklar några praktiska problem utan bryter snarare mot de allmänna reglerna.



  1. Fatalt fel:Anrop till odefinierad metod mysqli_stmt::get_result()

  2. Finns det några gratisverktyg för att generera 'INSERT INTO'-skript i MS SQL Server?

  3. fånga DB-undantag i JSF+EJB-applikationen

  4. MySQL - hur man front pad postnummer med 0?