- 事务:同生共死
- 指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)-也就是由多个SQL语句组成,必须座位一个整体执行
- 这些SQL语句作为一个整体一起向系统提交,要么都执行,要么都不执行
- 事务一旦开始只有一种结果
- 语法步骤:
- 开始事务:BEGIN TRANSACTION
- 事务提交:COMMIT TRANSACTION
- 事务回滚:ROLLBACK TRANSATION
- 判断某条语句执行是否出错:
- 全局变量@@ERROR
- @@ERROR只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL语句是否有错,需要对错误进行累计:
- 例:SET@ERRORSUM = @ERRORSUM+@@ERROR
- SET IMPLICIT_TRANSACTION{ON|OFF}隐式事务
--事务
--1.打开一个事务
begin transaction
declare @sum int =0
update Student set StuName = '王振宇' where StuID = '1651030201'
set @sum = @sum + @@ERROR
update Student set StuName = '刘浩' where StuID = '1651030202'
set @sum = @sum + @@ERROR
--只要有任何一条SQL语句执行出错,最后的@SUM就不是0
if @sum<>0
begin
--表示程序执行出错了
--回滚
rollback
end
else
begin
--如果没有出错,则提交该事务
commit
end
--自动提交事务
--当执行一条SQL语句的时候,数据库自动打开一个事务,当语句执行成功,
--数据库自动提交事务,执行失败,数据库自动回滚事务
--隐式事务,每次执行一条sql语句时,数据库自动帮我们打开一个事务
--但是需要我们手动提交,或者回滚事务
SET IMPLICIT_TRANSACTIONS { ON | OFF }隐式事务
--打开隐式事务
SET IMPLICIT_TRANSACTIONS ON
SELECT * FROM Student
COMMIT
--不打开隐式事务
SET IMPLICIT_TRANSACTIONS ON
--显示事务:需要手动打开事务,手动提交或者回滚事务
begin tran
--………………
commit tran
select * from Student