¿Cómo puedo editar una tabla con el fin de permitir eliminación en cascada?
-
10-10-2019 - |
Pregunta
Tengo una tabla que representa los usuarios. Cuando se elimina un usuario me sale:
instrucción DELETE en conflicto con la restricción de referencia
Al parecer, CASCADE DELETE
no es tan fácil como lo imaginaba en SQL Server y las necesidades de opciones que se añaden a la tabla.
El problema es:. No puedo encontrar la manera de añadir la opción CASCADE DELETE
Estoy usando: SQL Server 2008 . ¿Alguna idea de cómo hacer esto?
Solución
Lea este artículo de Microsoft por primera vez. Read Me . Yo uso la interfaz gráfica de usuario durante el diseño asi que aquí hay una imagen de la forma en que se selecciona en SSMS.
La sintaxis añadido a la clave externa es "ON DELETE CASCADE"
Otros consejos
Google ALTER TABLE DROP CONSTRAINT
, entonces ALTER TABLE ADD CONSTRAINT
:
Aquí está un ejemplo rápido:
CREATE TABLE A
(
ID INTEGER NOT NULL UNIQUE
);
CREATE TABLE B
(
ID INTEGER NOT NULL UNIQUE
CONSTRAINT fk__B__A
REFERENCES A (ID)
);
-- Oops! Forgot the CASCADE referential actions.
-- DROP the constraint then recreate it:
ALTER TABLE B DROP
CONSTRAINT fk__B__A;
ALTER TABLE B ADD
CONSTRAINT fk__B__A
FOREIGN KEY (ID)
REFERENCES A (ID)
ON DELETE CASCADE
ON UPDATE CASCADE;
Esta es la forma me gustaría añadir la función de "eliminación en cascada" a una ya existente tecla extranjera en SQL Server Management Studio .
En primer lugar, encontrar su clave externa, y abrirlo de "DROP y CREATE A" en una nueva ventana de consulta.
A continuación, sólo tiene que añadir "ON DELETE CASCADE
" a la orden "ADD CONSTRAINT
":
A continuación, simplemente pulse pulsó el botón "Ejecutar" para ejecutar la consulta.
Trabajo hecho!