用了触发器就不能回滚事务处理,怎么办?

程式人生2000 2005-04-18 04:12:02
在一个表里写了触发器,在增加新记录时把部分信息写入另一个表。

现在我写了一个事务处理,同时在两个表插入数据。但是在第二个表操作失败时第一个表还是操作成功了。也就是说没有回滚事务。可是我把第一个表的触发器给去了就能回滚事务了。不知大家有没有遇到过类似的问题。请指教。

...全文
232 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
程式人生2000 2005-04-18
  • 打赏
  • 举报
回复
多谢楼上的提醒我才能发现问题所在。分都给你了。呵。
wyb0026 2005-04-18
  • 打赏
  • 举报
回复
CREATE TRIGGER T_Update_User_accounts ON dbo.User_accounts
FOR INSERT,UPDATE
AS

begin
declare
@numrows int,
@uid int,
@tag char(2),
@ip char(15),
@addtime datetime

select @uid=i.uid,@tag=i.lasttag,@ip=i.lastip,@addtime=i.lastlogin from inserted i
select @numrows = @@rowcount
if @numrows = 0
return

insert into User_login(uid,tag,ip,addtime) values(@uid,@tag,@ip,@addtime)

if @@rowcount>0
--commit; --你这里不是有个提交吗 先把这个隐去在试一下如果能正确会滚这句话就有问题了
return
end
程式人生2000 2005-04-18
  • 打赏
  • 举报
回复
问题已解决。找到原因了。原来我在触发器中也用了回滚。把下面这几句注释掉就行了。

/* if @@rowcount>0
commit;
return*/
程式人生2000 2005-04-18
  • 打赏
  • 举报
回复
对不起。上面的触发器我把插入INSERT去了。这样就没有问题了。正确的如下:

CREATE TRIGGER T_Update_User_accounts ON dbo.User_accounts
FOR INSERT,UPDATE
AS

begin
declare
@numrows int,
@uid int,
@tag char(2),
@ip char(15),
@addtime datetime

select @uid=i.uid,@tag=i.lasttag,@ip=i.lastip,@addtime=i.lastlogin from inserted i
select @numrows = @@rowcount
if @numrows = 0
return

insert into User_login(uid,tag,ip,addtime) values(@uid,@tag,@ip,@addtime)

if @@rowcount>0
commit;
return
end


有这个触发器就不会回滚了
程式人生2000 2005-04-18
  • 打赏
  • 举报
回复
问题已描述的很清楚。第一个触发器中没有触发器。源码如下:

CREATE TRIGGER T_Update_User_accounts ON dbo.User_accounts
FOR UPDATE
AS

begin
declare
@numrows int,
@uid int,
@tag char(2),
@ip char(15),
@addtime datetime

select @uid=i.uid,@tag=i.lasttag,@ip=i.lastip,@addtime=i.lastlogin from inserted i
select @numrows = @@rowcount
if @numrows = 0
return

insert into User_login(uid,tag,ip,addtime) values(@uid,@tag,@ip,@addtime)

if @@rowcount>0
commit;
return
end
wyb0026 2005-04-18
  • 打赏
  • 举报
回复
请问第一个触发中有没有事务处理操作?
chd2001 2005-04-18
  • 打赏
  • 举报
回复
问题描述清楚点啊。
事物写在那里?几个触发器?

34,590

社区成员

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

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