実装時に、どうしてもトランザクションがうまく動作しない。
調べたところ、よく目にする以下の形
sess := conn.NewSession(nil)
tx, _ := sess.Begin()
_, err := sess.InsertInto など
if (err != nil) {
tx.Rollback()
}
tx.Commit()
よく見かける形
でも、試したところ、rollbackされなかった。。。
dbrのversionかもしれ無いけど、dbrのドキュメントを見ると
dbr.Tx
tx.InsertInto
とある。
以下のようにしてみる
sess := conn.NewSession(nil)
tx, _ := sess.Begin()
_, err := tx.InsertInto など
if (err != nil) {
tx.Rollback()
}
tx.Commit()
無事トランザクションがききました。
###追記(2016/09/20)
dbrのgithubのテストコードでも同様になっていました。
参考URL:https://github.com/gocraft/dbr/blob/master/transaction_test.go