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

¿Cómo agregar eliminar restricciones en cascada?

Estoy bastante seguro de que no puede simplemente agregar on delete cascade a una restricción de clave externa existente. Primero debe eliminar la restricción y luego agregar la versión correcta. En SQL estándar, creo que la forma más fácil de hacer esto es

  • iniciar una transacción,
  • soltar la clave externa,
  • agregue una clave externa con on delete cascade y finalmente
  • confirmar la transacción

Repita para cada clave externa que desee cambiar.

Pero PostgreSQL tiene una extensión no estándar que le permite usar múltiples cláusulas de restricción en una sola instrucción SQL. Por ejemplo

alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
   foreign key (gid)
   references games(gid)
   on delete cascade;

Si no conoce el nombre de la restricción de clave externa que desea eliminar, puede buscarla en pgAdminIII (simplemente haga clic en el nombre de la tabla y mire el DDL, o expanda la jerarquía hasta que vea "Restricciones"), o puede consultar el esquema de información.

select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null