在mySQL中(尤其是5.5),似乎我们有两种不同的方法来设置事务隔离级别。我只是想知道我是否正确地认为
是正确的SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
做与
完全相同的SET tx_isolation = 'REPEATABLE-READ'
,对于其他可能的隔离水平也是如此。
编辑1
我还不够精确。考虑到我的问题, @danihp的答案是正确的。但是实际上,我打算问
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
vers
SET SESSION tx_isolation = 'REPEATABLE-READ'
(注意SET SESSION
而不是SET
)。
它们完全一样吗?
服务器系统变量:
您可以使用SET tx_isolation = 'REPEATABLE-READ'
在服务器系统变量上设置默认隔离级别。" MySQL Server维护了许多系统变量,这些系统变量表示如何配置" 此变量设置了默认事务级别。
当前交易:
您可以使用SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
将隔离级别从当前事务上的新级别更改为新级别。
注意:
"在mySQL 5.7.20中添加了 参考: 编辑 您可以使用交易将几个语句"封装"作为一个操作。当您开始交易时,就在此时,您可以更改此新事务的隔离级别:transaction_isolation
作为tx_isolation
的别名,该 CC_6现在已弃用,并在mySQL 8.0中删除。应调整应用程序以优先使用transaction_isolation
。/p>START TRANSACTION;
/** change isolation level here with SET TRANSACTION statement
to avoid default isolation level **/
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;