• 主页
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言
zjl8008 诚誉科技 软件工程师  2014年06月12日
表有触发器时dw.update报错Row changed between retrieve and update.
启用触发器 更新就出错Row changed between retrieve and update.
禁用就好了,有什么解决办法吗??
补充一下,经测试发现取消触发器的 IF UPDATE(xm) OR UPDATE(xb) OR UPDATE(nl) OR UPDATE(nldw) 行就好了,这行写的不对吗?

--dw的更新时语句为
UPDATE zybrzl SET sflx = 1, nl = '25', rybq = '1', rq = '2014-06-12 10:36:27.703', cyks = '11' WHERE zyid = 5569

--触发器代码
ALTER TRIGGER [dbo].[Tri_zybrzl_update_lis]
ON [dbo].[zybrzl]
for UPDATE
AS
IF UPDATE(xm) OR UPDATE(xb) OR UPDATE(nl) OR UPDATE(nldw)
BEGIN
return
UPDATE t1
SET V_BRXM=i.XM,v_xb= (case rtrim(ltrim(i.xb)) when '1' then '男' when '2' then '女' else null end),v_nl=i.nl,V_NLLX=i.nldw
FROM
V_LIS_ZYSFXX v ,his_lis.dbo.tb_brsfxxb t1,INSERTED i
WHERE v.V_Lsh=t1.V_LSH
AND t1.D_SFSJ>DATEADD(dd,-7,GETDATE())
AND i.blh=v.V_LSH
AND t1.I_BRLBDM=1

UPDATE t1
SET V_BRXM=i.XM,v_xb= (case rtrim(ltrim(i.xb)) when '1' then '男' when '2' then '女' else null end),v_nl=i.nl,V_NLLX=i.nldw
FROM
V_LIS_ZYSFXX v ,his_lis.dbo.TB_BRSFXXB_JYSQ t1,INSERTED i
WHERE v.V_Lsh=t1.V_LSH
AND t1.D_SFSJ>DATEADD(dd,-7,GETDATE())
AND i.blh=v.V_LSH
AND t1.I_BRLBDM=1

END

...全文
104 点赞 收藏 5
写回复
5 条回复

还没有回复,快来抢沙发~

发动态
发帖子
PowerBuilder
创建于2007-09-28

582

社区成员

6.6w+

社区内容

PowerBuilder 相关问题讨论
社区公告
暂无公告