首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自PHP的MySQL事务

问来自PHP的MySQL事务
EN

Stack Overflow用户
提问于 2010-07-19 11:23:51
回答 1查看 9.6K关注 0票数 2

查询1:

代码语言:javascript
复制
$link = mysql_connect('localhost', 'root', '');
mysql_select_db('rems', $link);
mysql_query('SET AUTOCOMMIT=0; START TRANSACTION', $link);
mysql_query('DELETE FROM admins WHERE admin_id=4', $link);
mysql_query('ROLLBACK; SET AUTOCOMMIT=1', $link);

查询2:

代码语言:javascript
复制
$link = mysql_connect('localhost', 'root', '');
mysql_select_db('rems', $link);
mysql_query('SET AUTOCOMMIT=0;START TRANSACTION;
    DELETE FROM admins WHERE admin_id=4;
    ROLLBACK; SET AUTOCOMMIT=1', $link);

从上面的两个查询中,第一个查询没有正确执行(事务不能工作),因为通过多次调用mysql_query函数单独执行查询。但我需要这样做。也就是说,我需要第一种方法的结果(对单个事务多次调用mysql_query函数)

请问有什么想法吗??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-19 12:15:19

对于标准的mysql模块,要么分别调用每个查询:

代码语言:javascript
复制
mysql_query('SET AUTOCOMMIT=0');
mysql_query('START TRANSACTION');
mysql_query('DELETE FROM admins WHERE admin_id=4');
mysql_query('ROLLBACK');//nothing will be done, I assume it's for testing
mysql_query('SET AUTOCOMMIT=1');

或者首先创建一个过程:

代码语言:javascript
复制
DELIMITER //
CREATE PROCEDURE weirdrolledbackdelete (IN oid INTEGER)
BEGIN
SET AUTOCOMMIT=0;
START TRANSACTION;
DELETE FROM admins WHERE id = oid;
ROLLBACK;
SET AUTOCOMMIT=1;
END;//

所以以后你可以使用它:

代码语言:javascript
复制
mysql_query('CALL weirdrolledbackdelete(4);');
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3280592

复制
相关文章

相似问题

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