gpt4 book ai didi

sql - 哪些语句属于 SQLite 3 中的事务?

转载 作者:行者123 更新时间:2023-11-30 18:37:49 24 4
gpt4 key购买 nike

我计划编写一个使用 SQLite 3 与数据库通信的多线程应用程序。计划采用多线程并发读写数据库。

我想做的一件事是在事务中执行一系列语句。这一系列语句无法组合成单个查询,因为我的应用程序需要在语句之间执行应用程序逻辑以确定接下来要执行的语句。至关重要的是,事务中所做的更改只能以原子方式对其他线程可见,即整个事务在任何时候都不可见,或者都不可见。其中一些事务仅执行 SELECT 语句,其他事务还执行 UPDATEINSERT 语句。

现在我的计划是让所有线程同时使用一个 sqlite3 对象。每当线程需要执行事务时,它就会从某处获取一组准备好的语句并根据需要执行它们。我确保准备好的语句一次不会被多个线程使用。

我发现无论是 sqlite_prepare 还是 sqlite_step 系列函数都不允许我指定一个上下文来标识运行语句的事务。 SQLite 如何(如果有的话)识别哪些语句属于哪个事务?文档对此事尚无定论。

如果无法识别要在其中运行语句的事务,我相信我必须使用与同一数据库的多个连接,因为至少连接上下文标识了我的语句正在其中执行的事务。这将需要一些不同的程序设计,这就是为什么我还没有开始编写数据库代码并且无法显示任何内容(因为它不存在)。

最佳答案

一个连接一次只能有一个事务。

因此,如果您想将多个线程彼此隔离,则必须为每个线程使用一个连接,或者在数据库外部序列化线程。

关于sql - 哪些语句属于 SQLite 3 中的事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35797775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com