PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie führt man ein kaskadierendes Update durch?

In Postgres (und anderen RDBMs) gelten kaskadierende Updates ausschließlich für Fremdschlüssel. Beispiel:

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) 

Tatsächlich werden andere Optionen nicht benötigt. Wenn Sie dies für eine Spalte tun müssen, die kein Fremdschlüssel ist, bedeutet dies, dass das Modell schlecht entworfen ist (es ist kein normalisiert ). Andererseits löst die Möglichkeit der selektiven kaskadierten Aktualisierung von Fremdschlüsseln kein praktisches Problem, sondern verstößt eher gegen die allgemeinen Regeln.