翻译自:官方参考文档(MySQL 5.7 Reference Manual),对应的章节 https://dev.mysql.com/doc/refman/5.7/en/set-transaction.html
1、SET TRANSACTION 语法
SET [GLOBAL | SESSION] TRANSACTION
transaction_characteristic [, transaction_characteristic] ...
transaction_characteristic:
ISOLATION LEVEL level
| READ WRITE
| READ ONLY
level:
REPEATABLE READ
| READ COMMITTED
| READ UNCOMMITTED
| SERIALIZABLE
通过SET TRANSACTION可以修改Mysql数据库的事务隔离级别或者用来修改事务内表数据的访问模式。ISOLATION LEVEL 是设置InnoDB表(即存储引擎为InnoDB的所有表)的事务隔离级别,只对该类型的表有效!在SET TRANSACTION之间可以加上可选项GLOBAL或SESSION显示指定该事务级别的修改的作用域。
2、作用域GLOBAL、SESSION
GLOBAL:只对执行了SET TRANSACTION 之后,只对后续新的数据库会话连接有效,已经存在的会话连接无效!
SESSION:只对执行了SET TRANSACTION的当前数据库会话连接的后续新发起的事务或未提交的事务有效!
没有使用GLOBAL或SESSION关键字的话,只对执行了SET TRANSACTION的当前数据库会话连接的后续新发起的事务有效!已经存在的未提交的事务,还是继续使用之前的事务隔离级别!!
3、事务隔离级别Transaction Isolation Levels
关于事务隔离级别的介绍,请看章节14.5.2.1 ,“Transaction Isolation Levels”
4、事务内表数据访问模式
默认情况下,一个事务内的表的数据访问模式为Read/Write,即可以对表进行读和写操作。READ ONLY模式下只可以进行读操作