gpt4 book ai didi

sql-server - 无法创建删除触发器,因为表具有带有级联 DELETE 的 FOREIGN KEY

转载 作者:行者123 更新时间:2023-12-02 16:50:16 25 4
gpt4 key购买 nike

我正在尝试创建删除触发器。我有一个名为 Nemanet_Navigation 的导航表。该表本身有一个外键,但在选择表的关系时,我在 INSERT 和 UPDATE 规范中选择了 - 删除规则无操作。所以我不选择Cascading。然后我有这个触发器:

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 Table 下名为 Triggers 的文件夹中。有人可以帮忙吗?

最佳答案

INSTEAD OF 触发器用于修改不能使用DML 的 View 。尝试使用 BEFOREAFTER 触发器。

Oracle RDBMS

关于sql-server - 无法创建删除触发器,因为表具有带有级联 DELETE 的 FOREIGN KEY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3469740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com