Moh*_*eri 6 mysql transactions autocommit
我需要在我的MySQL项目中使用一个事务.但我不确定我是否必须使用mysql_query("SET AUTOCOMMIT=0");
.
我知道我有两个选择:
我也听说过这两个项目中的一个不需要使用AUTOCOMMIT = 0
.
请帮我知道我什么时候必须使用AUTOCOMMIT = 0
,有BEGIN
或有START TRANSACTION
?
谢谢.
egg*_*yal 14
默认情况下,MySQL在启用自动提交模式的情况下运行.这意味着只要执行更新(修改)表的语句,MySQL就会将更新存储在磁盘上以使其永久化.无法回滚更改.
要为单个语句系列隐式禁用自动提交模式,请使用以下
START TRANSACTION
语句:Run Code Online (Sandbox Code Playgroud)START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT;
使用
START TRANSACTION
,自动提交保持禁用状态,直到您使用COMMIT
或结束事务ROLLBACK
.然后,自动提交模式将恢复为先前的状态.
手册继续说:
要显式禁用自动提交模式,请使用以下语句:
Run Code Online (Sandbox Code Playgroud)SET autocommit=0;
通过将
autocommit
变量设置为零来禁用自动提交模式后,对事务安全表(例如InnoDB
or或表)的更改NDBCLUSTER
不会立即成为永久更改.您必须使用COMMIT
将更改存储到磁盘或ROLLBACK
忽略更改.
autocommit
是一个会话变量,必须为每个会话设置.要禁用自动提交模式为每个新连接,看到的描述autocommit
在系统变量5.1.3节,"服务器系统变量".
BEGIN
并BEGIN WORK
作为START TRANSACTION
启动事务的别名支持.START TRANSACTION
是标准的SQL语法,是启动临时事务的推荐方法.
归档时间: |
|
查看次数: |
13041 次 |
最近记录: |