5

如何使用 mysqli 在 PHP 中将事务的隔离级别设置为“SERIALIZABLE”?我到处找了,我找不到任何关于它的信息。

是隔离级别的解释。

4

2 回答 2

9

您可以在运行语句之前在查询中设置隔离级别。这假设您使用相同的会话执行所有操作:

$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
$mysqli->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");
...

您可能还想事先关闭自动提交,因为它改变了可序列化隔离的工作方式。

于 2009-11-13T20:50:56.750 回答
0

简短的回答:

$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
$mysqli->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");

长答案:除非您使用SESSIONGLOBAL修饰符,否则设置事务级别将仅适用于下一个查询。

tldr;

根据带有 InnoDB 表的 MySQL文档:

没有任何 SESSION 或 GLOBAL 关键字:

该语句仅适用于会话中执行的下一个事务。

后续事务恢复为使用命名特征的会话值。

事务中不允许该语句

请注意,设置该GLOBAL标志将影响所有后续查询现有会话不会受到影响。

于 2018-10-31T14:01:18.550 回答