在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)。
它们完全一样吗?
发布于 2017-11-30 14:39:59
服务器系统变量:
可以使用SET tx_isolation = 'REPEATABLE-READ'在服务器系统变量上设置默认隔离级别。“MySQL服务器维护许多系统变量,这些变量指示如何配置它”,该变量设置了默认事务级别。
当前事务:
可以使用SET TRANSACTION ISOLATION LEVEL REPEATABLE READ将当前事务上的隔离级别从默认级别更改为新级别。
公告:
"__transaction_isolation是在MySQL 5.7.20中添加的,作为tx_isolation__的别名,现在已不再推荐,并在MySQL 8.0中删除。应用程序应该调整为使用transaction_isolation而不是tx_isolation__。“
参考资料
编辑的
您可以使用交易记录将多个语句“封装”为一个操作。当您在此时启动事务时,可以更改此新事务的隔离级别:
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;https://stackoverflow.com/questions/47575445
复制相似问题