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

时间:2015-07-10 06:53:08

标签: c++ mysql sql transactions

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

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

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

有这样的功能吗?我错过了一些明显的东西吗?

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

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

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

2 个答案:

答案 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中没有启动交易的功能。