// Copyright 2018 The Xorm Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package xorm // Transaction Execute sql wrapped in a transaction(abbr as tx), tx will automatic commit if no errors occurred func (engine *Engine) Transaction(f func(*Session) (interface{}, error)) (interface{}, error) { session := engine.NewSession() defer session.Close() if err := session.Begin(); err != nil { return nil, err } result, err := f(session) if err != nil { return nil, err } if err := session.Commit(); err != nil { return nil, err } return result, nil }