gpt4 book ai didi

sql-server - 为什么 FOR Trigger 在 Action 之前不运行?

转载 作者:行者123 更新时间:2023-12-04 07:08:07 25 4
gpt4 key购买 nike

我正在尝试在表上编写触发器以避免插入两个未标记为 IsDeleted 的名称。但是选择的第一部分包含插入的部分,因此条件始终为真。我虽然使用 FOR 关键字会导致触发器在 INSERTION 之前运行,但在这种情况下,插入的行已经在表中。我错了还是这就是所有 FOR 触发器的工作方式?

ALTER TRIGGER TriggerName
ON MyTable
FOR INSERT, UPDATE
AS
BEGIN
If exist (select [Name] From MyTable WHERE IsDeleted = 0 AND [Name] in (SELECT [Name] FROM INSERTED)
BEGIN
RAISERROR ('ERROR Description', 16, 1);
Rollback;
END
END

最佳答案

FOR 在数据更改后运行,INSTEAD OF 是我认为您所追求的。

编辑:正如其他人所说, INSTEAD OF 运行而不是您正在更改的数据,因此您需要在数据有效时插入数据,而不是在无效时停止插入。

阅读此问题以获取有关触发器类型的更详细说明。

SQL Server "AFTER INSERT" trigger doesn't see the just-inserted row

关于sql-server - 为什么 FOR Trigger 在 Action 之前不运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/801492/

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