关于编写一个触发器的的问题,急急急!!!! (100分)

  • 主题发起人 kuangwenwei
  • 开始时间
K

kuangwenwei

Unregistered / Unconfirmed
GUEST, unregistred user!
在更改sbtz表中ID的同时update表sbyxzt中的ID,我的代码如下,不知是什么原因在Dbgrid
中编辑后保存就是报错,但是数据又是对的,不知哪位兄弟知道,可否告知.
create trigger u_sbtz on dbo.sbtz for update as
if @@rowcount=0
return
if update(id)
begin
update sbyxzt
set sbyxzt.id=i.id
from deleted d,inserted i,sbyxzt sb
where sb.id=d.id and sb.dw=d.dw
end
 
使用update好像不可以同时操作两张表
 
应该是可以同时操作两个表,我以前看过别人的触发器,
但我这个就不知道是什么原因保存时就是报错
"键列信息不足或不正确,更新到多行影响到多行"
 
试试看:
update sbyxzt
set sbyxzt.id=i.id
from deleted d,inserted i
where sbyxzt.id=d.id and sbyxzt.dw=d.dw
 
还是报错
 
Sorry, 我才看到这个出错信息"键列信息不足或不正确,更新到多行影响到多行"
update sbyxzt
set sbyxzt.id=i.id
from deleted d,inserted i,sbyxzt sb
where sb.id=d.id and sb.dw=d.dw
其中: set sbyxzt.id=i.id 中的 i 表中的纪录没有定位,请在where子句中限制表i的条件(定位到一条记录)

 
在触发器的第一行增加一句
SET NOCOUNT ON 试试!
 
to sdhxdjw
加了SET NOCOUNT ON就可以了,非常感谢,
但我还是不知道为什么要加这样一条语句,它的作用是什么?
 
看SQL帮助!
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息
 
顶部