触发更新

时间:2010-11-20 19:07:17

标签: sql-server triggers

我在表(标签)上的sqlserver中触发了

Create TRIGGER Trig_TabsUp
on Tabs
For UPDATE 
AS 
insert into tabs_Update select * from deleted 

tabs_update与制表符相同,但制表符中的标识字段不是tabs_update中的标识,只是int。它给了我这个错误

  

更新或删除的行值要么不使行唯一,要么改变多行2行

我试图将一个标识字段放到表Tabs_Update但仍然是同样的错误

2 个答案:

答案 0 :(得分:1)

尝试将SET NOCOUNT ON添加到触发器定义中。

答案 1 :(得分:0)

我猜你在ID字段上有一个主键或唯一约束。这是第二次更新同一记录时出现此问题。 Sp_help Tabs_update会告诉你它们是什么。

你是正确的ID字段和int。但是,您应该添加“更新日期时间”字段,并使主键成为ID和更新日期时间的组合。

同样做select *几乎总是被认为是个坏主意。如果添加新字段并忘记添加更新表,则触发器将中断。如果更改字段的顺序,它也会中断。