社区
MS-SQL Server
帖子详情
用了触发器就不能回滚事务处理,怎么办?
程式人生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
打赏
举报
回复
问题描述清楚点啊。
事物写在那里?几个触发器?
SQL Server用
触发器
强制执行业务规则
Microsoft:registered: SQL Server:trade_mark: 2000 提供了两种主要机制来强制业务...将
触发器
和触发它的语句作为可在
触发器
内
回滚
的单个事务对待。如果检测到严重错误(例如,磁盘空间不足),则整个事务即自动
回滚
。
了解SQLServer
触发器
及
触发器
中的事务
SQL——
触发器
触发器
是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。...将
触发器
和触发它的语句作为可在
触发器
内
回滚
的单个事务对待。如果检测到严重错误(例如,磁盘空间不足),则整个事务即自动
回滚
。
SQL Server的事务、游标、存储过程及
触发器
(pdf)
SQL Server的事务、游标、存储过程及
触发器
的创建和实例
夜鹰全新sql2008高级视频教程
本套教程重点讲解的内容包括:sql语法基础、组合查询、去除重复、聚合函数、子查询、临时表、存储过程、
触发器
、游标、事务
回滚
、事务并发控制、约束等技术,希望通过通过本套教程的学习,最终提升你的数据处理能力...
MS-SQL Server
34,590
社区成员
254,589
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章