触发器内SQL语句执行不成功,原表的update会继续执行?

lhw68500 2010-05-05 01:05:06
各位大侠:
现在我在a表中写一个update的触发器,触发器内有几条sql语句,要是其中一条执行出现异常或者出错后。
a表的update会更改?
...全文
310 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhw68500 2010-05-05
  • 打赏
  • 举报
回复
好的,谢谢!
htl258_Tony 2010-05-05
  • 打赏
  • 举报
回复
--现场测试
--> 生成测试数据表: [a]
IF OBJECT_ID('[a]') IS NOT NULL
DROP TABLE [a]
GO
CREATE TABLE [a] ([a] [int],[b] [int],[c] [int])
INSERT INTO [a]
SELECT '1','2','3'
GO

-->SQL查询如下:
create trigger tr_test on a
for update
as
if update(b)
update a set c=a*10/b
go

update a set b=0
/*
消息 8134,级别 16,状态 1,过程 tr_test,第 7 行
遇到以零作除数错误。
语句已终止。
*/
SELECT * FROM [a]
/*
a b c
----------- ----------- -----------
1 2 3

(1 行受影响)
*/
htl258_Tony 2010-05-05
  • 打赏
  • 举报
回复
--现场测试
--> 生成测试数据表: [a]
IF OBJECT_ID('[a]') IS NOT NULL
DROP TABLE [a]
GO
CREATE TABLE [a] ([a] [int],[b] [int],[c] [int])
INSERT INTO [a]
SELECT '1','2','3'
GO

-->SQL查询如下:
create trigger tr_test on a
for update
as
if update(b)
update a set c=a*10/b
go

update a set b=0
/*
消息 8134,级别 16,状态 1,过程 tr_test,第 7 行
遇到以零作除数错误。
语句已终止。
*/
SELECT * FROM [a]
/*
a b c
----------- ----------- -----------
1 2 3

(1 行受影响)
*/
lhw68500 2010-05-05
  • 打赏
  • 举报
回复
楼上的兄弟,确定?或者那个书上有明确的说明?谢谢楼上的兄弟!
htl258_Tony 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 happy_stone 的回复:]
引用 6 楼 lhw68500 的回复:
先谢谢各位的支持,我是这个意思,我a表的update的触发器,只要修改a的某个值时,触发器才会执行,我要问的意思是,修改a表时,触发拉触发器,触发器内的sql执行出错后。a表的修改会修改。触发器内sql出错后面的sql语句肯定不会执行,这个我知道。我是触发器内的sql执行出错,会不会改变引发触发器的正常修改。

a表本身的修改应该也会回滚的
[/Quote]同此看法。
快乐_石头 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lhw68500 的回复:]
先谢谢各位的支持,我是这个意思,我a表的update的触发器,只要修改a的某个值时,触发器才会执行,我要问的意思是,修改a表时,触发拉触发器,触发器内的sql执行出错后。a表的修改会修改。触发器内sql出错后面的sql语句肯定不会执行,这个我知道。我是触发器内的sql执行出错,会不会改变引发触发器的正常修改。
[/Quote]
a表本身的修改应该也会回滚的
lhw68500 2010-05-05
  • 打赏
  • 举报
回复
先谢谢各位的支持,我是这个意思,我a表的update的触发器,只要修改a的某个值时,触发器才会执行,我要问的意思是,修改a表时,触发拉触发器,触发器内的sql执行出错后。a表的修改会修改。触发器内sql出错后面的sql语句肯定不会执行,这个我知道。我是触发器内的sql执行出错,会不会改变引发触发器的正常修改。
--小F-- 2010-05-05
  • 打赏
  • 举报
回复
数据库的内部机制决定要回滚
永生天地 2010-05-05
  • 打赏
  • 举报
回复
触发器中任何地方出错,之前执行的操作都会白做
我是小数位 2010-05-05
  • 打赏
  • 举报
回复
如果一条语句出错,应该是该语句前后都不会执行!他会回滚到开始状态!
水族杰纶 2010-05-05
  • 打赏
  • 举报
回复
应该会回滚...
renadg 2010-05-05
  • 打赏
  • 举报
回复
如果update第一句时出错,则后面的不会执行,但如果是在后面,前面的那些应该会执行!

34,588

社区成员

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

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