14MYSQL-TCL事务控制语言

#TCL
/*
TRANSACTION CONTROL LANGUAGE 事务控制语言
事务:
一个或一组SQL语句,组成一个执行单元,这个执行单元要么全部执行要么全部不执行
案例:转账
张 1000
郭 1000

UPDATE 表 SET 张的余额=500 WHERE NAME='张';
UPDATE 表 SET 郭的余额=1500 WHERE NAME='郭';

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

事务的创建
隐式的事务:事务没有明显的开启和结束的标记,比如insert,update,delete语句
DELETE FROM 表 WHERE ID=1;

显式事务:事务有明显的开启和结束的标记
前提:必须先设置自动提交功能为禁用
SET autocommit=0;只针对当前的有效,不永久有效
步骤1:开启事务SET autocommit=0;
START TRANSACTION;可选的
步骤2.编写事务中的SQL语句(SELECT,insert,update,delete)
语句1
语句2
。。。
步骤3.结束事务
COMMIT;提交事务
ROLLBACK;回滚事务

UPDATE 表 SET 张的余额=500 WHERE NAME='张';
UPDATE 表 SET 郭的余额=1500 WHERE NAME='郭';
*/

SHOW ENGINES;
SHOW VARIABLES LIKE 'AUTOCOMMIT';

#演示事务的使用步骤
DROP TABLE IF EXISTS account;
CREATE TABLE account(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
balance DOUBLE
);
INSERT INTO account(username,balance) VALUES('张',1000),('郭',1000);
#1.开始事务
SET AUTOCOMMIT=0;
#2.编写一组事务的语句
UPDATE account SET balance=1000 WHERE username='张';
UPDATE account SET balance=1000 WHERE username='郭';
#3.结束事务
ROLLBACK;
#COMMIT;
SELECT * FROM account;


发布了25 篇原创文章 · 获赞 2 · 访问量 5446

猜你喜欢

转载自blog.csdn.net/qq_41644888/article/details/105214284