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

Come eseguire un aggiornamento a cascata?

In Postgres (e altri RDBM) gli aggiornamenti a cascata si applicano esclusivamente alle chiavi esterne. Esempio:

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) 

In effetti, non sono necessarie altre opzioni. Se senti la necessità di farlo per una colonna che non è una chiave esterna, significa che il modello è progettato male (non è normalizzato ). D'altra parte, la possibilità di un aggiornamento selettivo in cascata delle chiavi esterne non risolve alcun problema pratico ma infrange le regole generali.