如何启动将由 mysql_commit() 提交的 MySQL 事务

How to start MySQL transaction that will be committed by mysql_commit()

我正在编写一个使用 MySQL C API 连接到数据库的 C++ 应用程序。 MySQL服务器版本为5.6.19-log。

我需要在一个事务中 运行 多个 SQL UPDATEINSERTDELETE 语句,以确保所有更改或没有更改被应用。

我在文档中找到了完成事务(提交或回滚)的函数 mysql_commit() and mysql_rollback(),但我找不到 启动 的相应函数一笔交易。

有这个功能吗?我是否漏掉了一些明显的东西?


I 运行 UPDATEINSERTDELETE 语句使用 mysql_real_query() 函数。

我想我应该能够使用相同的 mysql_real_query() 函数通过 运行ning START TRANSACTION SQL 语句启动交易。然后我应该能够使用相同的 mysql_real_query() 函数通过 运行ning COMMIT SQL 语句提交事务。

但是,在 API 中使用专用的 mysql_commit()mysql_rollback() 函数有什么意义呢?

//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");   

看起来 MySQL C API 确实没有与 START TRANSACTION SQL 语句等效的专用函数。

MySQL C API 具有 mysql_commit() 函数,其功能与COMMIT SQL 语句相同.

MySQL C API 具有 mysql_rollback() 函数,其作用与ROLLBACK SQL 语句相同.

但是,这个API没有启动交易的功能。