/
Transaction Control Language 事物控制语言
*事务:

一个或一组SQL语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。
案例:转账
张三丰 1000
郭襄 1000
update 表 set 张三丰的余额=500 where name=’张三丰’
出现意外
update 表 set 郭襄的余额=1500 where name=’郭襄’

事务的特性:
ACID
原子性:一个事务不可再分割,要么都执行要么都不执行
一致性:一个事务执行会使数据从一个一致状态切换到另一个一致状态
隔离性:一个事务的执行不受其他事务的干扰
持久性:一个事务一旦提交,则会永久改变数据库的数据

事务的创建
隐式事务:事务没有明显的开启和结束的标记
比如insert、update、delete语句

显式事务:事务具有明显的开启和结束的标记
前提:必须先设置自动提交功能为禁用
set autocommit = 0;#设置自动提交功能为禁用

步骤1:开启事务
set autocommit=0;
start transaction;#可选的语句,可以不写
步骤2:编写事务中的SQL语句(select insert update delete)
语句1;
语句2;
……

*设置回滚点:
savepoint 回滚点名;

步骤3:结束事务
commit;提交事务
rollback;回滚事务,jdbc才能演示
回滚到指定的地方:

**
#演示事务的使用步骤

1.开启事务
SET autocommit=0;
#2.编写一组事务的语句
UPDATE account SET balance = 500 WHERE username=’张无忌’;
UPDATE account SET balance = 1500 WHERE username=’赵敏’;
#3.结束事务
COMMIT;

**
#2.delete 和 truncate 在事务使用时的区别

#演示delete,支持回滚
SET autocmommion=0;
START TRANSACTION;
DELETE FROM account;
ROLLBACK;

#演示truncate,不支持回滚
SET autocmommion=0;
START TRANSACTION;
TRUNCATE TABLE account;
ROLLBACK;