在查询之前更改自动提交,并在查询后重置它



我对MySQL比较陌生。我刚刚"发现"了交易。
我知道它们存在,但从未调查过它们。
我想知道的:

我使用PHP工作,并使用INNODB作为数据库引擎。

我可以在发送查询之前只设置autocommit = 0;并在查询后将其设置为 1 吗?

我之所以问这个,是因为我已经做了一个相当大的项目,并且觉得没有必要将整个事情"转换"为交易。感觉就像如果有人提交一些东西并且自动提交将设置为 0,而其他人会发送非事务查询,第二个查询不会"触发",因为它不是事务。

如果我想使用事务,是否需要将其应用于整个项目?还是仅会话或其他解决方法?

当您想将多个语句包装到单个事务中时,无需禁用autocommit,只需使用 mysqli 的 mysqli_begin_transaction(( 和 mysqli_commit(( 函数/方法来启动/提交事务(我会让你弄清楚如何回滚事务(。

如果显式启动事务,则会在事务持续时间内禁用自动提交:

启用了自动提交的会话可以通过使用显式 START TRANSACTION 或 BEGIN 语句启动多语句事务,然后以 COMMIT 或 ROLLBACK 语句结束来执行多语句事务。

请注意,即使启用了autocommitinnodb也对所有数据修改语句使用事务。所有这些设置意味着每个数据修改语句都包装到单个语句事务中,而无需指定事务。

最新更新