【问题标题】:SQL trigger is not trigger after insert插入后不触发 SQL 触发器
【发布时间】:2020-02-07 15:48:22
【问题描述】:
CREATE TRIGGER xyz
ON abc
AFTER INSERT,UPDATE
SET NOCOUNT ON;
AS
    DELETE FROM abc 
    WHERE condition;

我第一次通过上面的脚本直接将记录插入到表abc 中它可以工作,但是通过应用程序执行它时不起作用。随后它对两者都很好。

为什么我们第一次运行应用程序时它不工作?我也尝试了回滚选项,结果相同。触发器有什么问题吗?

【问题讨论】:

  • 您使用的是哪个 dbms? (该触发器似乎是特定于产品的。)
  • sql server 2016
  • 没有人知道“不起作用”是什么意思,也不知道如何确定它“不起作用”。更令人担忧的是,您要从同一个表的触发器中的表中删除行。
  • 我需要从表中删除无效记录的未来日期记录。应用程序发生了一些插入,这些插入正在推送一些具有未来日期的无效记录。所以当插入发生时,我必须从表中识别这些记录。
  • 任何其他建议

标签: sql-server triggers sql-server-2016


【解决方案1】:

尝试在块内移动 SET NOCOUNT ON,在 AS 之后

【讨论】:

  • 尝试和相同的结果,当我通过自动化脚本而不是通过应用程序插入记录时它的工作在插入后创建触发器 xyz ON abc,UPDATE AS SET NOCOUNT ON; DELETE FROM abc WHERE 条件;
  • 触发器应该绑定到表,所以它不应该与应用程序相关。我会仔细检查应用程序是否正在插入或更新表 abc。还要检查 WHERE 条件是否没有给你一个假阴性。
  • 正在检查插入、更新后的条件是否正确。其中日期时间>GETDATE()
  • 您可以考虑将 BEGIN 和 END 添加到块中——我认为这对您没有帮助。 CREATE TRIGGER xyz ON abc AFTER INSERT,UPDATE AS BEGIN SET NOCOUNT ON; DELETE FROM abc WHERE condition; END
  • 触发器是否启用?也许它被禁用并且您的自动化脚本给了您一个误报? ALTER TABLE abc ENABLE TRIGGER xyx
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 2021-03-08
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多