如何启动由mysql_commit()提交的MySQL事务
How to start MySQL transaction that will be committed by mysql_commit()
我正在编写一个使用MySQL C API连接到数据库的c++应用程序。MySQL server version is 5.6.19-log.
我需要在一个事务中运行几个SQL UPDATE
, INSERT
和DELETE
语句,以确保所有更改或不应用更改。
我在文档函数mysql_commit()
和mysql_rollback()
中发现完成事务(提交或回滚),但我找不到启动事务的相应函数。
有这样的函数吗?我错过了什么明显的东西吗?
我使用mysql_real_query()
函数运行UPDATE
, INSERT
和DELETE
语句。
我想我应该能够通过使用相同的mysql_real_query()
函数运行START TRANSACTION
SQL语句来启动事务。然后我应该能够通过使用相同的mysql_real_query()
函数运行COMMIT
SQL语句来提交事务。
但是,在API中使用专用的mysql_commit()
和mysql_rollback()
函数有什么意义呢?
看起来MySQL C API确实没有一个相当于START TRANSACTION
SQL语句的专用函数。
MySQL C API 具有 mysql_commit()
函数,其功能与COMMIT
SQL语句相同。
MySQL C API 具有 mysql_rollback()
函数,其功能与ROLLBACK
SQL语句相同。
但是,在这个API中没有启动事务的函数
//connect to mysql server:
MYSQL *mysql = mysql_init(NULL);
mysql = mysql_real_connect(mysql, ......)
//turn off auto_commit
mysql_autocommit(mysql , false);
或
//start a tranaction directly as follows
mysql_real_query(mysql,"BEGIN");
//run your commands:
mysql_real_query(mysql,"UPDATE...");
//commit your transaction
mysql_real_query(mysql, "COMMIT");
相关文章:
- 在Google Kick start中提交时出错
- 使用libcurl提交批量url的正确BING Api POST url是什么
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 使用 libgit2 创建 NOT INITIAL 提交
- 请找出我的代码中的错误,它在提交得到错误答案的同时仍然适用于我的所有测试用例
- 我的代码厨师提交显示错误的结果
- 在构建时执行execute_process以在构建时获取git提交哈希
- 为什么作业提交网站的输出与Visual Studio不同
- 向 Kattis 在线评委提交 c++ 程序时出现未知运行时错误
- 哪些 Netbeans 8.2 项目文件应提交到C++项目的版本控制?
- 如何在C++中预先提交分配的内存
- 将 Git 提交哈希读取到C++时出错
- Xcode 9 初始提交 所以只添加源文件
- 如何保存RNN的状态以从TF中的图中提交
- 在 C/C++ 源中包含 Git 提交哈希和/或分支名称
- 代码在我的系统上运行良好,但在 HackerRank 提交时出现分段错误
- Leetcode:为什么在提交和运行代码上,字符串类的“at”方法的行为不同
- 在尝试提交作业警告时,我一直在警告:与未指定行为的字符串字面结果比较[-WADDRESS]
- 如何在不调用 "-m" 选项的情况下自动化 git 提交来处理内部引号?
- 在 Leetcode 上提交 c++ 代码时出现"超出时间限制"错误