Я пытаюсь создать триггер удаления. У меня есть эта навигационная таблица, которая называется Nemanet_Navigation. Таблица имеет внешний ключ к себе, но при выборе отношения для таблицы, которую я выбрал в INSERT и UPDATE, выбрано Specification - Delete Rule NO Action. Поэтому я не выбираю Каскадирование. Тогда у меня есть этот триггер:
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
Но я получаю следующую ошибку:
Невозможно создать триггер INSTEAD OF DELETE 'Del_Nemanet_Navigation' для 'Nemanet_Navigatin'.
Это потому, что в таблице есть ИНОСТРАННЫЙ КЛЮЧ С каскадным УДАЛЕНИЕМ. Но в моей таблице Nemante_Navigation есть правило удаления - никаких действий (но по какой-то причине я отмечен серым, и я не могу его изменить). Триггер находится в папке «Триггеры» в таблице Nemanet_Navigation. Кто-нибудь может помочь?