每启动一个 mysql 程序, 就会获得一个单独的数据库连接。每个数据库连接都有一个全局变量 @@tx_isolation, 表示当前的事务隔离级别。
# 查看当前的隔离级别 SELECT @@tx_isolation; # 设置当前 MySQL 连接的隔离级别 set transaction isolation level read committed; # 设置数据库系统的全局的隔离级别 set global transaction isolation level read committed; -- 补充操作 # 创建mysql数据库用户 create user tom identified by 'abc123'; # 授予权限 # 授予通过网络方式登录的tom用户,对所有库所有表的全部权限,密码设为abc123. grant all privileges on *.* to tom@'%' identified by 'abc123'; # 给tom用户使用本地命令行方式,授予atguigudb这个库下的所有表的插删改查的权限。 grant select,insert,delete,update on atguigudb.* to tom@localhost identified by 'abc123'; 5.6 事务的具体理解 /* Transaction Control Language 事务控制语言 事务的含义: 一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行, 要么全部不执行。 引入: 张三丰有1000元,郭襄有1000元,张三丰给郭襄转账500元 update 表 set 张三丰的余额=500 where 意外..执行不了下一条语句了 update 表 set 郭襄的余额=1500 where 事务的四大特性: 原子性:一个事务不可再分割,要么都执行要么都不执行 一致性:一个事务执行会使数据从一个一致状态转换到另一个一致状态 隔离性:一个事务的执行不受其他事务的干扰 持久性:一个事务一旦提交,则会永久的改变数据库的数据 事务的分类: 隐式事务:事务没有明显的开启和结束的标记。如insert,update, delete语句,它们的自动提交功能默认开启 显式事务:事务具有明显的开启和结束的标记。前提:必须先设置 自动提交功能为禁用(只针对当前会话有效),语法:set autocommit=0; 事务的创建步骤: 步骤一:开启事务 set autocommit=0; start transaction;#此条语句可以不写,上一条语句已默认开启事务 步骤二:编写事务中的sql语句(select,insert,update,delete) 语句1; 【savepoint a;】 语句2; ... 步骤三:结束事务 commit; #提交事务 rollback; #回滚事务 【rollback to a;】 #回滚到保存点处 注意:savepoint 节点名;设置保存点,搭配rollback使用 事务的隔离级别: 脏读 不可重复读 幻读 read uncommitted: √ √ √ read committed: × √ √ repeatable read: × × √ serializable × × × ① 注意: mysql中默认为第三个隔离级别 repeatable read oracle中默认为第二个隔离级别 read committed ② 查看隔离级别 select @@tx_isolation; ③ 设置隔离级别 set session|global transaction isolation level 隔离级别; */ 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); SELECT * FROM account; -- 演示1:演示事务的创建步骤 SET autocommit=0; #编写一组事务的语句 UPDATE account SET balance=500 WHERE username='张无忌'; UPDATE account SET balance=1500 WHERE username='赵敏'; #结束事务 COMMIT;#或使用rollback;相当于撤销驻留在内存的语句 -- 演示2:演示savepoint的使用 SET autocommit=0; START TRANSACTION; DELETE FROM account WHERE id=1; SAVEPOINT a;#设置保存点 SELECT FROM account WHERE id=2; ROLLBACK TO a;#回滚到保存点处一. MySQL基础语法 (10)
内容版权声明:除非注明,否则皆为本站原创文章。