doc: 阅读golang sqlx PreparedStatement相关文档

This commit is contained in:
asahi
2025-06-20 12:32:34 +08:00
parent 362ccaec26
commit a5476b5d09

View File

@@ -282,3 +282,20 @@ row = txStmt.QueryRow(852)
prepare操作实际会在数据库运行故而其需要connection和connection state。
### PreparedStatement事务操作
在使用sqlx进行事务操作时首先需要通过`db.Begin()`开启事务,且`后续所有想要加入事务的操作dml/query都需要通过tx.Exec/tx.Query来执行`。
如果在开启事务并获取`tx`对象后,后续操作仍然通过`db.Exec/db.Query`来执行,`那么后续操作会从连接池中获取一个新的连接来执行,并不会自动加入已经开启的事务`。
```go
tx, _ = db.Begin()
// 错误操作此处dml会从连接池获取新的连接来执行
db.Exec(xxxx)
// 正确操作此处dml会在tx绑定的连接中执行
tx.Exec(xxxx)
```
对于PreparedStatement操作如果想要将其和事务相关联有如下两种使用方式
- `如果statement此时尚未创建`,可以通过`tx.Prepare`来创建该连接
- `如果Steement此时已经创建`,那么可以通过`tx.Stmt(dbStmt)`来获取新的Stmt新Stmt会和事务所属连接绑定通过新Stmt执行dml可以加入当前事务