在使用触发器中遇到的问题

yf402 2004-09-30 02:58:25
在数据库中有两张表A和B,在A中一个字段fcsl(发出数量),B中一个字段为ljfcsl(累计发出数量)。利用触发器实现,当在A表插入一条记录时,级联更新B表,更新公式为:ljfcsl = ljfcsl + fcsl。但在实际使用过程中会偶尔出现B表数据没有更新的情况。想请教大家这可能是由于什么原因造成的,应如何解决?深表谢意!
...全文
201 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yf402 2004-10-08
  • 打赏
  • 举报
回复
请教一下,更新触发和插入触发的处理有什么区别吗?
MichaelZou 2004-09-30
  • 打赏
  • 举报
回复
你的触发器是不是只是更新触发,没有插入触发啊?
yf402 2004-09-30
  • 打赏
  • 举报
回复
TO:fhuibo
使用游标就不会出现我所描述的情况了吗?
yf402 2004-09-30
  • 打赏
  • 举报
回复
不好意思 上面的话是对arrow_gx说的
yf402 2004-09-30
  • 打赏
  • 举报
回复
楼上的能不能说的详细些
我的代码为
BEGIN TANSATCTION
UPDATE B
SET B.LJFCSL = B.LJFCSL + INSERTED.FCSL
FROM B,
INSERTED
WHERE B.BH = A.BH
COMMIT



fhuibo 2004-09-30
  • 打赏
  • 举报
回复
用游标最使用:以下是自己做的实验:
CREATE TRIGGER AA ON [dbo].[TABLE1]
FOR UPDATE
AS
DECLARE @TID INT
DECLARE @ynn varchar(50)
DECLARE @ynnn varchar(50)
DECLARE @xnn varchar(50)
DECLARE @xnnn varchar(50)
DECLARE Employee_Cursor CURSOR FOR SELECT tid FROM deleted

OPEN Employee_Cursor

FETCH NEXT FROM Employee_Cursor into @tid
WHILE @@FETCH_STATUS = 0
BEGIN
select @ynn = tnn, @ynnn=tnnn from deleted where tid=@tid
select @xnn = tnn, @xnnn=tnnn from inserted where tid=@tid
insert into table2 (ynn, xnn, ynnn,xnnn) values (@ynn, @xnn, @ynnn, @xnnn)
FETCH NEXT FROM Employee_Cursor into @tid
END

CLOSE Employee_Cursor
DEALLOCATE Employee_Cursor

arrow_gx 2004-09-30
  • 打赏
  • 举报
回复
批量处理的时候,建议用事务,就是一条一条,使用事务也能更好的保证数据更新正确
hmzly 2004-09-30
  • 打赏
  • 举报
回复
是不是批量处理的时候出现这种情况
我也是
一条一条处理没问题,批量就有问题

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧