在SQLite查询中使用事务?

3

我正在处理一个任务,需要使用sqlite进行事务处理。这是我遇到困难的部分:

打开数据库并启动一个事务。使用该事务调用读取所有区域的函数,然后在它返回时提交该事务

由于我只查询数据库而不插入/更新,因此我认为我不需要在设置事务方面做太多工作。这是我的处理方式:

database, _ := sql.Open("sqlite3", "./world.db")
tx, _ := database.Begin()
rows, err := database.Query("SELECT id, name FROM zones")
if err != nil {
    tx.Rollback()
} else {
    defer tx.Commit()
}

然而,由于查询中没有使用交易tx,我不知道如何将其传递给函数,因此我认为我的查询设置有误。我认为我需要在查询中以某种方式使用交易,可能是类似于tx.Query()的东西,但目前我束手无策。


2
只有当您有多个修改数据库的语句需要作为一个大原子组处理时,事务才有意义。如果您只是在进行选择操作,那就没有意义了。 - Shawn
https://golang.org/pkg/database/sql/#example_Conn_BeginTx - mkopriva
2个回答

2

1

只需将database.Query替换为tx.Query

此外,对于单个查询操作,您无需使用事务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接