обновить и вернуть в ГОРМ - PullRequest
0 голосов
/ 12 марта 2020

Я хочу обновить запись при возврате поля из записи. Если я не вернусь с той же командой, могут возникнуть проблемы с параллелизмом, поэтому я хочу, чтобы это была операция atomi c. Кто-нибудь может подсказать мне, как этого добиться в Горме?

1 Ответ

1 голос
/ 13 марта 2020

Вы можете использовать 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()
...