我正在编写一个使用MySQL C API连接数据库的C ++应用程序。 MySQL服务器版本为5.6.19-log。
我需要在一个事务中运行多个SQL UPDATE
,INSERT
和DELETE
语句,以确保应用所有更改或不应用任何更改。
我在文档函数mysql_commit()
和mysql_rollback()
中找到了完成事务(提交或回滚),但我找不到启动的相应函数交易。
有这样的功能吗?我错过了一些明显的东西吗?
我使用mysql_real_query()
函数运行UPDATE
,INSERT
和DELETE
语句。
我想我应该可以通过使用相同的mysql_real_query()
函数运行START TRANSACTION
SQL语句来启动事务。然后我应该能够通过使用相同的COMMIT
函数运行mysql_real_query()
SQL语句来提交事务。
但是,在API中使用专用mysql_commit()
和mysql_rollback()
函数有什么意义?
答案 0 :(得分:1)
//connect to mysql server:
MYSQL *mysql = mysql_init(NULL);
mysql = mysql_real_connect(mysql, ......)
//turn off auto_commit
mysql_autocommit(mysql , false);
OR
//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");
答案 1 :(得分:0)
看起来MySQL C API确实没有与START TRANSACTION
SQL语句等效的专用功能。
MySQL C API 具有 mysql_commit()
函数,其功能与COMMIT
SQL语句相同。
MySQL C API 具有 mysql_rollback()
函数,其功能与ROLLBACK
SQL语句相同。
但是,此API中没有启动交易的功能。