当前位置:  开发笔记 > 编程语言 > 正文

SQLITE(C/C++接口) - 如何提交事务

如何解决《SQLITE(C/C++接口)-如何提交事务》经验,为你挑选了1个好方法。

我正在使用sqlite c/c ++接口.

现在这是我的情景 -

我有3个表(相关表)说A,B,C.

现在,有一个名为Set的函数,它获取一些输入,并根据输入将行插入这三个表中.(有时它可以是其中一个表中的更新)

现在我需要两件事.

一,我不想要自动提交功能.基本上我想在每1000次调用Set函数后提交

其次,在set函数本身内,如果我发现在插入两个表后,第三个插入失败,那么我必须还原,那个Set函数调用中的那些特定更改.

现在我没有看到任何sqlite3_commit函数暴露.我只看到一个名为sqlite3_commit_hook()的函数,它在文档中稍有不同.为此目的是否有任何功能?或者实现这种行为的方法是什么?

你能帮助我做最好的方法吗?

此致,Arjun



1> Isak Savo..:

您使用sqlite3_exec并分别传递"BEGIN TRANSACTION"和"END TRANSACTION".

// 'db' is the pointer you got from sqlite3_open*
sqlite3_exec(db, "BEGIN TRANSACTION;", NULL, NULL, NULL);
// Any (modifying) SQL commands executed here are not committed until at the you call:
sqlite3_exec(db, "END TRANSACTION;", NULL, NULL, NULL);

这些SQL命令有同义词(比如COMMIT代替END TRANSACTION).作为参考,这里是事务的SQLite文档.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有