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?

¿Fue útil?

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. texto alternativo La sintaxis añadido a la clave externa es "ON DELETE CASCADE"

Otros consejos

Google ALTER TABLE DROP CONSTRAINT, entonces ALTER TABLE ADD CONSTRAINT:

ALTER TABLE

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.

 gota y Crear

A continuación, sólo tiene que añadir "ON DELETE CASCADE" a la orden "ADD CONSTRAINT":

 on delete cascade

A continuación, simplemente pulse pulsó el botón "Ejecutar" para ejecutar la consulta.

Trabajo hecho!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top