Estoy intentando crear un desencadenador Eliminar. Tengo esta tabla de navegación que se llama Nemanet_Navigation. La tabla tiene una clave externa a sí mismo pero al seleccionar la relación para la tabla que tengo en INSERTAR y ACTUALIZAR Especificación seleccionada - Eliminar regla NO acción. Entonces no selecciono Cascading. Entonces tengo este disparador:No se puede crear el desencadenador Eliminar porque la tabla tiene una LLAVE EXTRAÑA con DELETE en cascada
CREATE TRIGGER Del_Nemanet_Navigation ON Nemanet_Navigation
INSTEAD OF DELETE
AS
CREATE TABLE #Table(
Nav_ID uniqueidentifier
)
INSERT INTO #Table (Nav_ID)
SELECT Nav_ID
FROM deleted
DECLARE @C uniqueidentifier
SET @c = 0
WHILE @C <> (SELECT COUNT(Nav_ID) FROM #Table) BEGIN
SELECT @c = COUNT(Nav_ID) FROM #Table
INSERT INTO #Table (Nav_ID)
SELECT Nemanet_Navigation.Nav_ID
From Nemanet_Navigation
LEFT OUTER JOIN #Table ON Nemanet_Navigation.Nav_ID = #Table.Nav_ID
WHERE Nemanet_Navigation.Nav_pID IN (SELECT Nav_ID FROM #Table)
AND #Table.Nav_ID IS NULL
END
DELETE Nemanet_Navigation
FROM Nemanet_Navigation
INNER JOIN #Table ON Nemanet_Navigation.Nav_ID = #Table.Nav_ID
Pero me sale el siguiente error:
Cannot create INSTEAD OF DELETE trigger 'Del_Nemanet_Navigation' on 'Nemanet_Navigatin'.
Esto se debe a que la tabla tiene una clave externa con eliminación en cascada. Pero mi tabla Nemante_Navigation tiene una regla de eliminación: no se realiza ninguna acción (pero está marcada en gris por algún motivo que desconozco) y no puedo cambiarla. El desencadenador se encuentra en la carpeta llamada Triggers en la tabla Nemanet_Navigation. ¿Alguien puede ayudar?
¿Qué versión de SQL Server? –