sincronizacion - diferencia entre cascada y restringir? Base de datos SQL DDL
replicacion de base de datos oracle 11g (3)
En este caso, estas opciones, ON DELETE y ON UPDATE, se aplican a la tabla / fila principal. La razón por la que NO ACTION y RESTRICT son lo mismo es porque no puede tener una relación con un hijo y un padre si el padre no existe.
¿Alguien podría decirme qué significa exactamente en cascada y restringir? Está en sistemas de bases de datos sujetos a la parte DDL.
¿Y si no escribo ninguno de ellos en mi declaración de eliminación?
Hay tres tipos de eliminación asociados con la clave externa
- On Delete Cascade: cuando los datos se eliminan de una tabla principal, los datos se eliminan automáticamente de la tabla secundaria (tabla de clave externa).
- On Delete set Null: cuando los datos se eliminan de una tabla principal, la celda asociada a la clave externa será nula en una tabla secundaria.
- On Delete Restrict: cuando los datos se eliminan de una tabla principal y hay una clave externa asociada con la tabla secundaria, se produce un error, no se puede eliminar el registro.
ON DELETE CASCADE y ON DELETE RESTRICT son propiedad de la clave externa y las establece cuando crea la relación entre dos tablas.
Si configura que la relación sea ON DELETE CASCADE, cuando ejecute una declaración DELETE en una tabla principal, BORRARÁ automáticamente todas las filas correspondientes de la tabla CHILD. Pero el RESTRINGIR (que es el comportamiento predeterminado de la relación de clave foránea) es cuando intenta eliminar una fila de la tabla principal y hay una fila en la tabla secundaria con el mismo ID; no se quejará de las filas secundarias existentes.
De cualquier manera, no necesita mencionar nada en su cláusula DELETE.
También escribí una publicación en el blog sobre las diferentes reglas para los comandos Eliminar y Actualizar con más detalle aquí:
https://koukia.ca/sql-server-foreign-key-update-and-delete-rules-556cf09117fe