###################
#事务
###################
-- 事务是需要在同一个处理单元中执行的一系列更新处理的集合。
-- commit
START TRANSACTION;
-- 将运动T恤的销售单价降低1000日元
UPDATE Product
SET sale_price = sale_price - 1000
WHERE product_name = '运动T恤';
-- 将T恤衫的销售单价上浮1000日元
UPDATE Product
SET sale_price = sale_price + 1000
WHERE product_name = 'T恤衫';
COMMIT;
-- rollback相当于什么也没干
START TRANSACTION;
-- 将运动T恤的销售单价降低1000日元
UPDATE Product
SET sale_price = sale_price - 1000
WHERE product_name = '运动T恤';
-- 将T恤衫的销售单价上浮1000日元
UPDATE Product
SET sale_price = sale_price + 1000
WHERE product_name = 'T恤衫';
ROLLBACK;
/*像这样不使用指令而悄悄开始事务的情况下,应该如何区分各个事务呢?
通常 会有如下两种情况。
A 每条SQL语句就是一个事务(自动提交模式)
B 直到用户执行COMMIT或者ROLLBACK为止算作一个事务
通常的DBMS都可以选择其中任意一种模式。
默认使用自动提交模式的 DBMS 有 SQL Server、PostgreSQL 和 MySQL 等 A。
该模式下的 DML 语句如下 所示,每一条语句都括在事务的开始语句和结束语句之中。
*/
#在自动提交模式时 改变了无法恢复
#不是自动提交时 在commit之前就有救 之后就无力回天了