关于SQL Server里的两个问题(触发器和事务),请大侠们教教小弟!
1触发器里面只有INSERTED 和 DELETED2个虚拟表。。没有UPDATED表。。
INSERTED表里面含有插入的数据或者更新的新数据。
DELETED表里面含有删除的数据或者更新的旧数据。
2create database语句是独立成为一个事务的语句。。不能在过程里面写create database语句
一个存储过程就是一个事务,
在大的事务里面可以套小的事务。
如果需要对执行的内容进行事务处理,
需要加上
begin tran
execute
commit
才可以。
事务是不会自己回滚的
需要你自己在代码里通过
begin try 和 end try捕获产生的错误
然后在begin catch 和 end catch 块中使用rollback语句让事务回滚
你可以简单地先写个小例子试一下,体会下rollback的用法
比如:
begin tran
update table2 set b=10,c=10 where a=1
rollback tran
就会发现数据没有被更新
然后再结合begin try end try begin catch end catch的用法
就能实现在事务执行过程中出错后回滚的功能
大概的形式就是这样:
begin tran
begin try
--做相关操作
--结束的时候如果没有错误则用commit提交事务
commit tran
end try
begin catch
--出现错误的时候会跳转到这里
--用rollback回滚事务
rollback tran
end catch
0条评论