【发布时间】:2011-02-13 04:16:45
【问题描述】:
我有一个超级简单的表格,看起来像这样:
CREATE TABLE [dbo].[TestTable](
[SomeColumn] [int] NOT NULL )
我在另一个表上也有一个超级简单的触发器,看起来像这样:
ALTER TRIGGER [dbo].[trg_Audit_TableXYZ] ON [dbo].[TableXYZ] AFTER UPDATE
AS
INSERT INTO [dbo].[TestTable] Values (123)
我的问题是当触发器运行时出现以下错误:
更新或删除的行值要么不会使行唯一,要么会改变多行(2 行)。
我不明白,为什么会出现这个错误?
谢谢。
【问题讨论】:
-
触发器真的包含值 '123' 吗?
-
是的,我只是将值硬编码为 123,以使触发器尽可能简单。当我运行触发器时,我确保“TestTable”的行数为零,并且我只更新具有触发器的表上的单个单元格。即使我删除了主键约束,我仍然会遇到同样的错误(刚刚尝试过,我会更新帖子)。
-
您是否使用 MSSMS 编辑
TableXYZ中的行?类似的问题在这里stackoverflow.com/questions/901931/…。使用 MSSMS 编辑时出现重复行的问题,但在代码中完成更新时工作得很好。您需要TableXYZ中的主键。
标签: sql-server triggers