我认为“删除后”意味着直到删除已经发生后才会触发触发器,但这是我的情况......
在 C# 中删除触发器后,我制作了 3 个几乎相同的 SQL CLR,它运行了大约一个月。突然,三个中的一个在运行自动删除工具时停止工作。
通过停止工作,我的意思是,无法通过客户端软件从表中删除记录。禁用触发器导致允许删除,但重新启用它会干扰删除能力。
所以我的问题是“怎么会是这样?” 是否有可能使用它的工具弄乱了内存?似乎即使触发器抛出了异常,如果它是在删除之后,记录不应该消失吗?
所有触发器看起来都是这样的:
ALTER TRIGGER [sysdba].[AccountTrigger] ON [sysdba].[ACCOUNT] AFTER DELETE AS
EXTERNAL NAME [SQL_IO].[SQL_IO.WriteFunctions].[AccountTrigger]
GO
CLR 触发器执行一次选择和一次插入到另一个数据库。我还不知道 SQL Server Mgmt Studio 是否有任何错误,但我会在发现后更新问题。
更新:
好吧,在重新执行上面相同的触发代码之后,一切都会再次运行,所以我可能永远不知道如果 SSMS 出现任何错误会发生什么。
此外,触发器代码中的任何地方都没有调用回滚。