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

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

本文关键字:提交 commit MySQL 事务 何启动 启动 mysql      更新时间:2023-10-16

我正在编写一个使用MySQL C API连接到数据库的c++应用程序。MySQL server version is 5.6.19-log.

我需要在一个事务中运行几个SQL UPDATE, INSERTDELETE语句,以确保所有更改或不应用更改。

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

有这样的函数吗?我错过了什么明显的东西吗?


我使用mysql_real_query()函数运行UPDATE, INSERTDELETE语句。

我想我应该能够通过使用相同的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");