首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_query会提交所有内容吗

问mysql_query会提交所有内容吗
EN

Stack Overflow用户
提问于 2013-02-09 06:20:57
回答 1查看 4.4K关注 0票数 2

我在php中使用mysql扩展,我知道它从PHP 5.5.0开始就被弃用了,但我有很多代码都是用这个扩展写的。在我看来,mysql_query似乎提交了查询,如果是这样,这意味着它被设置为autocomit,如何设置以使其不自动提交。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-09 06:29:44

旧的mysql扩展没有专门用于事务控制的函数,但是您可以发出SQL语句来做您想做的事情。

您可以通过启动一个事务来隐式关闭一个事务的持续时间内的自动提交:

代码语言:javascript
复制
mysql_query("START TRANSACTION");

一旦您提交或回滚,自动提交模式将返回到默认值。

代码语言:javascript
复制
mysql_query("COMMIT"); // or ROLLBACK

您可以通过设置会话变量来关闭整个会话的自动提交:

代码语言:javascript
复制
mysql_query("SET autocommit=0");

或者在您的MySQL实例上全局更改它,以便它更改所有会话的默认值:

代码语言:javascript
复制
mysql_query("SET GLOBAL autocommit=0");

或者通过编辑/etc/my.cnf将其设置为在MySQL服务启动时更改全局设置:

代码语言:javascript
复制
[mysqld]
autocommit=0

如果您使用的是MySQL 5.1,则必须以稍微不同的方式执行此操作:

代码语言:javascript
复制
[mysqld]
init_connect='SET autocommit=0'

您可能已经知道了,但值得重复的是,如果您使用的是InnoDB表,那么事务就没有任何意义。MyISAM表不支持事务,因此无论您的设置如何,它们始终是自动提交的。其他几个存储引擎也是如此,包括内存和CSV。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14782299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档