doc: 阅读golang sqlx PreparedStatement相关文档
This commit is contained in:
@@ -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可以加入当前事务
|
||||
|
||||
|
||||
Reference in New Issue
Block a user