ADO与SQL触发器报错的问题

 如果数据表使用级联更新的触发器,且记录影响到多行时,在前台修记录录有时会报“无法为更新定位行,一些值可能已在最后一次读取后已更改。”的错误,如果是在触发器后才产生的此错误,则在触发器里加上SET NOCOUNT ON即可。原因估计是,更新多行结果返回更新多行信息不是一行,而ado引擎便判断错误。所以干脆不允许出现任何返回。建议写触发器时都加上这句,少好多麻烦。
例如:

CREATE  TRIGGER TR_Depart_UpdateCode ON [dbo].[Depart] 
FOR UPDATE
AS
begin
  if Update(cCode) 
  begin
    SET NOCOUNT ON  --加上这句,前台才不会报错,意思为不返回更新记录数
    declare @OldCode varchar(20),@NewCode varchar(20)
    Select @OldCode = cCode from Deleted
    Select @NewCode = cCode from Inserted

    --人员所属部门
    Update Person Set cDepCode = @NewCode where cDepCode = @OldCode
  
    SET NOCOUNT OFF  --恢复默认值
  end

end
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值