mySQL - 使用 PHP 的 mysqli 设置隔离级别

发布于 2024-08-11 06:50:59 字数 176 浏览 10 评论 0原文

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

这里是隔离级别的说明。

How do I set the isolation level of a transaction to 'SERIALIZABLE' in PHP using mysqli? I have looked everywhere and I can't find any information on it.

Here is an explanation of the isolation levels.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眼波传意 2024-08-18 06:50:59

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

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

您可能还想关闭 自动提交 之前,因为它改变了可序列化隔离的工作方式< /a>.

You can just set the isolation level in a query before you run your statements. This assume that you do everything using the same session:

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

You may also want to turn off autocommit before hand since it changes the way serializable isolation works.

蝶舞 2024-08-18 06:50:59

简短回答:

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

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

太棒了;

根据带有 InnoDB 表的 MySQL 文档

没有任何 SESSION 或 GLOBAL 关键字:

该语句仅适用于执行的下一个交易
在会话内。

后续事务将恢复使用指定的会话值
特点。

交易中不允许使用该语句

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

Short answer:

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

Long Answer: Unless you use the SESSION or GLOBAL modifier, setting the transaction level will only apply to the very next query.

tldr;

According to the MySQL documentation with InnoDB tables:

Without any SESSION or GLOBAL keyword:

The statement applies only to the next single transaction performed
within the session.

Subsequent transactions revert to using the session value of the named
characteristics.

The statement is not permitted within transactions

Note that setting the GLOBAL flag will affect all subsequent queries Existing sessions will not be affected.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文