T-SQL---事务操作
使用事务解决银行转账问题
begin transaction /*定义变量,用于累计事务执行过程中的错误*/ declare @errorsum int set @errorSum=0 --初始化为0,即无错误 update bank set currentMoney=currentMoney-1000 where customerName='张三' set @erroSum=@errorSum+@@error update bank set currentMoney=currentMoney+1000 where customerName='李四' set @erroSum=@errorSum+@@error if @errorSum<>0 --如果有错误 begin print '交易失败,回滚事物' rollback transaction end else begin print '交易成功,提交事务,写入硬盘,永久保存' commit transaction end go print '查看转账事务后的余额' select * from bank
事务的ACID特性
1、原子性(Atomicity):事务是一个完整的操作。事务的各步骤是不可分的,要么都执行,要么都不执行。
2、一致性(Consistency):当事务完成时,数据必须处于一致状态
3、隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖或影响其他事务
4、永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性