PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como fazer uma atualização em cascata?


No Postgres (e outros RDBMs), as atualizações em cascata aplicam-se exclusivamente a chaves estrangeiras. Exemplo:
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) 

Na verdade, outras opções não são necessárias. Se você sentir a necessidade de fazer isso para uma coluna que não é uma chave estrangeira, isso significa que o modelo está mal projetado (não é normalizado ). Por outro lado, a possibilidade de atualização seletiva em cascata de chaves estrangeiras não resolve nenhum problema prático, mas quebra as regras gerais.