sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo hacer una actualización en cascada?

En Postgres (y otros RDBM), las actualizaciones en cascada se aplican exclusivamente a las claves externas. Ejemplo:

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) 

De hecho, no se necesitan otras opciones. Si siente la necesidad de hacer esto para una columna que no es una clave externa, significa que el modelo está mal diseñado (no es normalizado ). Por otro lado, la posibilidad de actualización selectiva en cascada de claves foráneas no resuelve ningún problema práctico sino que rompe las reglas generales.