gpt4 book ai didi

go - 我可以在 GO 中使用 transaction.Stmt(sqlstatement).Exec(parameter) 时记录最终查询吗?

转载 作者:数据小太阳 更新时间:2023-10-29 03:26:38 24 4
gpt4 key购买 nike

您好,我正在使用 database/sql 包,例如我有这个:

var DeletePermissionStmt *sql.Stmt
DeletePermissionStmt, err = database.Prepare(`DELETE FROM permission WHERE permission_id=$1`)
if err != nil {
log.Errorf("can't prepare delete permission statement: %s", err.Error())
}
transaction, err := database.Begin() // assume postgres database is defined previously
if err != nil {
log.WithFields(logFields).Errorf("can't start transaction: %s", err.Error())


return err
}
_, err := transaction.Stmt(DeletePermissionStmt).Exec(permission_id)

我正在成功地做我想做的事,除了我想记录所使用的确切查询,如果我在 postgres 中运行它,我将得到相同的结果有办法吗?

最佳答案

事务使用标准 SQL,即 BEGIN/START TRANSACTION, COMMIT, ROLLBACK。但是,准备好的语句是特定于数据库服务器的,例如

使用 database/sql 获取精确查询的日志将很困难(或不可能)。查询日志记录取决于驱动程序的实现,例如 https://github.com/jackc/pgx支持日志记录,但是 https://github.com/lib/pq不支持。

关于go - 我可以在 GO 中使用 transaction.Stmt(sqlstatement).Exec(parameter) 时记录最终查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39567531/

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