diff --git a/.gitignore b/.gitignore index 72733326..656f8900 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ _book .idea vendor .vscode +.DS_Store diff --git a/finisher_api.go b/finisher_api.go index c52efdb8..c5eecda2 100644 --- a/finisher_api.go +++ b/finisher_api.go @@ -617,7 +617,9 @@ func (db *DB) Transaction(fc func(tx *DB) error, opts ...*sql.TxOptions) (err er if committer, ok := db.Statement.ConnPool.(TxCommitter); ok && committer != nil { // nested transaction - if !db.DisableNestedTransaction && (db.PrepareStmt && !db.DisablePrepareNestedTransaction) { + if !db.DisableNestedTransaction && (!db.PrepareStmt || + (db.PrepareStmt && !db.DisablePrepareNestedTransaction)) { + err = db.SavePoint(fmt.Sprintf("sp%p", fc)).Error if err != nil { return