php - Laravel 是如何管理 MySQL 变量的?

标签 php mysql laravel

如果我这样做

DB::statement("SET @foo := 1;");
DB::select("SELECT @foo;");

我在结果中得到了预期的 1。但我无法在任何地方找到它是否是一个保证的结果。如果我理解正确的话,这些变量是特定于 MySQL 连接的。那么是否有可能由于某种原因这两个语句将在不同的连接上执行并且我会得到不同的结果?我可以依靠它一直工作吗?

最佳答案

为确保两条语句始终作为一条语句执行,您可以使用 database transactions :

DB::transaction(function () {
    DB::statement("SET @foo := 1;");
    DB::select("SELECT @foo;");
});

这保证了每笔交易都被视为一个“单元”(atomicity)。 有两种可能性:两个语句都作为一个语句执行,或者如果发生故障,则根本不执行任何语句。

下一个保证是:两个语句都在隔离中执行,这意味着如果您同时执行此代码,则始终保证事务按顺序执行。

关于php - Laravel 是如何管理 MySQL 变量的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53816844/

相关文章:

php - 日期显示为 1969-12-31 的选项菜单

mysql - Codeigniter 计算具有不同值的行

php - 在 Laravel 中调整上传图像的大小并存储在 S3 中不起作用

laravel - Eloquent 地计算不同的地位

java - 如何使用输入字段永久保存到网页?

javascript - 如何使用复选框启用/禁用数组中每行的文本框

PHP if 语句与 MySQL 查询

mysql - 将 'ROWorder' 中的值设置为 'ROWorder' + 1 中的最高值

php - PDO MySQL 与 PHP Usort

php - 未找到 Laravel 基表或 View