触发器修改不同表上的多行,而不是SQL Server 2005中调用的行

时间:2009-05-23 17:04:48

标签: sql-server tsql triggers

我试图对其他表上的更新触发的表执行更新,并收到错误消息:

更新或删除的行值不会使行唯一,也不会改变多行。

例如我有这个表:

table_1
===========
int id   (primary_key,identity)
nchar(10)  state_name

table_2
===========
int number

更新table_2后,我想将列'state_name'中的所有值更改为'false'

create trigger tr on table_2
after update
as
update table_1 set state_name = 'false'

当我尝试更新table_2时,收到错误消息。 有办法绕过这个限制吗?

2 个答案:

答案 0 :(得分:1)

在Table_2中添加主键约束(例如auto inc no),你会没事的。

答案 1 :(得分:1)

create table table_1(id int identity(1,1)primary key,state_name char(10))

create table table_2(number int) 去

更新后在table_2上创建触发器tr,因为更新table_1设置state_name ='false' 去

插入table_1选择'true' insert table_2 select 1

更新table_2 set number = 2

从table_1中选择*

从table_2中选择*

您使用的是哪个版本?它在SQL 2K8& amp; SQL 2K5。再次检查你的代码。