在MySQL(特别是5.5)中,似乎我们有两种不同的方法来设置事务隔离级别。我只是想知道我是否正确地认为
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
与
完全相同SET tx_isolation = 'REPEATABLE-READ'
并且对于其他可能的隔离级别也是如此。
编辑1
我还不够精确。 @ danihp的答案是正确的,因为我的问题。但实际上,我打算问一下
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
与
SET SESSION tx_isolation = 'REPEATABLE-READ'
(请注意SET SESSION
而非SET
)。
它们完全一样吗?
答案 0 :(得分:3)
服务器系统变量:
您可以使用SET tx_isolation = 'REPEATABLE-READ'
在服务器系统变量上设置默认隔离级别。 " MySQL服务器维护许多系统变量,指示如何配置" 此变量设置默认事务级别。
当前交易:
您可以使用SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
在当前交易上将隔离级别从默认级别更改为新级别。
注意:
在MySQL 5.7.20中添加了 " transaction_isolation
作为tx_isolation
的别名,现已弃用,并在MySQL 8.0中删除。应调整应用程序以优先使用transaction_isolation
tx_isolation
。"
<强>参考强>:
<强>被修改强>
您可以使用transactions来&#34;封装&#34;几个陈述作为单一操作。当您start a transaction时,您可以在此时更改此新交易的隔离级别:
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;