Tôi đang cố tạo trình kích hoạt Xóa. Tôi có bảng điều hướng này được gọi là Nemanet_Navigation. Bảng có một khóa ngoại cho chính nó nhưng khi lựa chọn mối quan hệ cho bảng tôi có trong INSERT và UPDATE Specification được chọn - Delete Rule NO Action. Vì vậy, tôi không chọn Cascading. Sau đó, tôi có kích hoạt này:Không thể tạo trình kích hoạt Xóa vì bảng có khóa NGOẠI HỐI với tầng 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
Nhưng tôi nhận được lỗi sau:
Cannot create INSTEAD OF DELETE trigger 'Del_Nemanet_Navigation' on 'Nemanet_Navigatin'.
Điều này là do bảng có KEY NƯỚC NGOÀI VỚI tầng DELETE. Nhưng bảng Nemante_Navigation của tôi có quy tắc xóa - không có hành động (nhưng được đánh dấu màu xám vì một lý do nào đó mà tôi không biết - và tôi không thể thay đổi nó). Trình kích hoạt nằm trong thư mục có tên Triggers trong Bảng Nemanet_Navigation. Ai có thể giúp được không?
Phiên bản SQL Server nào? –