发布网友 发布时间:2022-04-08 05:49
共2个回答
懂视网 时间:2022-04-08 10:11
手动提交]memset ( sql, 0x00, sizeof( sql ) );
memcpy ( sql, "set autocommit=0;", 17 );
if( mysql_query( sock, sql ) ){
sprintf( g_acTrcMsg, "关闭自动提交模式失败[%d][%s]", mysql_errno( sock ), mysql_error( sock ) );TRCLOG1
return -1;
}
2、 事务开始
memset ( sql, 0x00, sizeof( sql ) );
memcpy ( sql, "start transaction;", 18 );
if( mysql_query( sock, sql ) ){
sprintf( g_acTrcMsg, "建立事务失败[%d][%s]", mysql_errno( sock ), mysql_error( sock ) );TRCLOG1
return -1;
}
3、 事务回滚
memset ( sql, 0x00, sizeof( sql ) );
memcpy ( sql, "rollback;", 9 );
if( mysql_query( sock, sql ) ){
sprintf( g_acTrcMsg, "事务回滚失败[%d][%s]", mysql_errno( sock ), mysql_error( sock ) );TRCLOG1
return -1;
}
4、 事务提交
memset ( sql, 0x00, sizeof( sql ) );
memcpy ( sql, "commit;", 7 );
if( mysql_query( sock, sql ) ){
sprintf( g_acTrcMsg, "提交事务失败[%d][%s] ", mysql_errno( sock ), mysql_error( sock ) );TRCLOG1
return -1;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
c语言mysql数据库事务开始、提交、回滚范例
标签:数据库 事务 mysql c语言
热心网友 时间:2022-04-08 07:19
你试过合并到一个事务里不行的吗?追答
1、那我想问 事务提交后的数据和事务提交前的数据难道不一样吗,除了自增主键id是由mysql生成的以外 其他提交完的数据应该不会改变啊,你直接用就可以了啊
2、另外假设你的提交前的数据和提交后的数据发生了变化,那你试试用select 从数据库里查提交的数据,我用mysql给你测试了一下 是可以的,截图在下面。。
3、最后如果还是不行的话,可以用事务嵌套,,在你的代码最外层嵌套一个事务,例如
事务0开始
事务1开始//
.....逻辑代码
事务1提交//
事务2开始
.......逻辑代码(这里需要用到事务1已经提交过的数据)
事务2提交
事务3开始
...逻辑代码(这里需要用到事务2已经提交过的数据)
事务3提交
事务0提交