From a10fe4228c32477fc4d4983652ce1755d9a37de5 Mon Sep 17 00:00:00 2001 From: Jason Lee Date: Tue, 19 Nov 2019 16:01:55 +0800 Subject: [PATCH] Ensure rollback when commit has error. --- main.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index dd5f32f4..48d22c85 100644 --- a/main.go +++ b/main.go @@ -526,7 +526,7 @@ func (s *DB) Debug() *DB { } // Transaction start a transaction as a block, -// return error will rollback, otherwise to commit +// return error will rollback, otherwise to commit. func (s *DB) Transaction(fc func(tx *DB) error) (err error) { tx := s.Begin() defer func() { @@ -539,10 +539,13 @@ func (s *DB) Transaction(fc func(tx *DB) error) (err error) { err = fc(tx) + if err == nil { + err = tx.Commit().Error + } + + // Makesure rollback when Block error or Commit error if err != nil { tx.Rollback() - } else { - err = tx.Commit().Error } return }