--SQL Delete 触发器
--在程序中删除表a1保存不成功。
ALTER TRIGGER [dbo].[a1_delete] ON [dbo].[a1]
For delete AS
BEGIN
if @@rowcount=0 return
update b1 set a1_idnote='' from b1,deleted where b1.a1_id=deleted.id
END
--SQL Delete 触发器
--在程序中删除表a1保存不成功。
ALTER TRIGGER [dbo].[a1_delete] ON [dbo].[a1]
For delete AS
BEGIN
update b1 set a1_idnote='' from b1,deleted where b1.a1_id=deleted.id
update b2 set a1_idnote='' from b2,deleted where b2.a1_id=deleted.id
END
--SQL Delete 触发器
--在程序中删除表a1保存成功。
ALTER TRIGGER [dbo].[a1_delete] ON [dbo].[a1]
For delete AS
BEGIN
update b1 set a1_idnote='' from b1,deleted where b1.a1_id=deleted.id
--update b2 set a1_idnote='' from b2,deleted where b2.a1_id=deleted.id
END
--SQL Delete 触发器
--在程序中删除表a1保存成功。
ALTER TRIGGER [dbo].[a1_delete] ON [dbo].[a1]
For delete AS
BEGIN
--update b1 set a1_idnote='' from b1,deleted where b1.a1_id=deleted.id
update b2 set a1_idnote='' from b2,deleted where b2.a1_id=deleted.id
END
--为什么多笔语法会保存不成功,是否与什么配置有关或其他什么原因?
------解决思路----------------------
不成功的错误消息是什么?
是否 b1、b2 有 update 触发器?
------解决思路----------------------
-- 这个不是 SQL Server 的语法。
ALTER TRIGGER [dbo].[a1_delete] ON [dbo].[a1]
For delete AS
-- 你改成
ALTER TRIGGER [dbo].[a1_delete] ON [dbo].[a1]
after delete AS
------解决思路----------------------
这个信息没啥用,出错被回滚了~
逻辑问题
deleted 这时是a1的没错
update b1 set a1_idnote='' from b1,deleted where b1.a1_id=deleted.id
deleted 这时是b1的了
update b2 set a1_idnote='' from b2,deleted where b2.a1_id=deleted.id
------解决思路----------------------
呃 不是,是我的错,之前的数据问题~~
deleted 这时是a1的没错
update b1 set a1_idnote='' from b1,deleted where b1.a1_id=deleted.id
deleted 这时还是a1
update b2 set a1_idnote='' from b2,deleted where b2.a1_id=deleted.id
------解决思路----------------------
程序通过时间戳是否变化、或者比较所有字段是否变化来判断数据是否发送改变。
所以要比较 a1 表在 Sybase 和 SQL Server 中的各个字段,某些数据类型是否取值精度不一样,而你PB中的定义不变,从而导致比较时一直认为是数据发生了改变。。
------解决思路----------------------
sybase和ms sqlserver的SQL语法都是差不多的,但是表是否创建的时候由于字段的数据类型有差异造成的