Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql事务中是否可以同时包含select和update?_Php_Mysql_Transactions - Fatal编程技术网

Php mysql事务中是否可以同时包含select和update?

Php mysql事务中是否可以同时包含select和update?,php,mysql,transactions,Php,Mysql,Transactions,我很好奇这是否能实现,因为我目前面临一个bug,我想看看在事务中添加一个SELECT和一个UPDATE是否能修复它(如果你想知道为什么我不发布导致bug的代码,那是因为它是一个复杂的环境,我不能发布所有的影响因素) 我还感兴趣的是,与此相关的是,如果您曾经体验过在SELECT查询之后编写和更新查询的代码,但是更新在SELECT之前执行(排除脚本可能会运行两次).这取决于你所说的交易是什么意思。 有两种类型的交易: 隐式事务:与插入、更新、选择、删除语句一样,在这些语句中没有显式的事务命令,如果

我很好奇这是否能实现,因为我目前面临一个bug,我想看看在事务中添加一个SELECT和一个UPDATE是否能修复它(如果你想知道为什么我不发布导致bug的代码,那是因为它是一个复杂的环境,我不能发布所有的影响因素)


我还感兴趣的是,与此相关的是,如果您曾经体验过在SELECT查询之后编写和更新查询的代码,但是更新在SELECT之前执行(排除脚本可能会运行两次).

这取决于你所说的交易是什么意思。 有两种类型的交易:

  • 隐式事务:
    插入
    更新
    选择
    删除
    语句一样,在这些语句中没有显式的事务命令,如果发生错误,数据库引擎将回滚整个语句
  • 在这种情况下,事务中包含的语句作为一个单元执行,或者
    COMMIT
    整个事务,或者
    ROLLBACK
因此,不能在一个查询中同时包含
SELECT
UPDATE
,但可以在事务中同时包含它们,如:

START TRANSACTION;
   SELECT * FROM tableName;
   UPDATE table SET something = 'other something' WHERE thirdsomething = @s;
COMMIT;
然后将它们放入存储过程或UDF中


请注意:
SELECT
语句不会修改数据,因此您可能不需要将其包含在事务中,因此,在您的情况下,只有
UPDATE
语句,您可以在不使用事务的情况下使用存储过程。

不发布导致错误的代码是因为它是一个复杂的环境
,然后尝试在更简单的环境中复制