Вы можете использовать func (*DB) BeginTx
, чтобы начать транзакцию, а когда вы закончите вычисления или обновления, вы можете использовать func (s *DB) Commit() *DB
, чтобы обновить транзакцию. Он заблокирует таблицу для обеспечения работы атома c (в случае ошибки используйте откат).
Для получения дополнительной информации об этой функции используйте эту ссылку: https://godoc.org/github.com/jinzhu/gorm#DB .BeginTx
Например (образец Golang код):
db, err := mysql.SharedStore().BeginTx()
if err != nil {
return nil, err
}
defer func() { _ = db.Rollback() }()
//calculations
db.CommitTx()