के साथ एक विदेशी कुंजी है, मैं एक हटाएं ट्रिगर बनाने की कोशिश कर रहा हूं। मेरे पास यह नेविगेशन टेबल है जिसे Nemanet_Navigation कहा जाता है। तालिका में खुद के लिए एक विदेशी कुंजी है लेकिन तालिका के लिए संबंध चुनते समय मेरे पास INSERT और अद्यतन विशिष्टता चयनित है - नियम कोई कार्रवाई हटाएं। तो मैं कैस्केडिंग का चयन नहीं करता हूं। तब मैं इस ट्रिगर है:हटाएं ट्रिगर नहीं बना सकता क्योंकि तालिका में कैस्केडिंग DELETE
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
लेकिन मैं निम्नलिखित त्रुटि मिलती है:
Cannot create INSTEAD OF DELETE trigger 'Del_Nemanet_Navigation' on 'Nemanet_Navigatin'.
इसका कारण यह है तालिका व्यापक साथ एक विदेश कुंजी हटाना है। लेकिन मेरी Nemante_Navigation तालिका में नियम हटा दिया गया है - कोई कार्रवाई नहीं है (लेकिन किसी कारण से ग्रे चिह्नित है जिसे मैं नहीं जानता - और मैं इसे बदल नहीं सकता)। ट्रिगर Nemanet_Navigation तालिका के तहत ट्रिगर नामक फ़ोल्डर में है। क्या कोई मदद कर सकता है?
SQL सर्वर का कौन सा संस्करण? –