Я использую GORM для обновления 2 сущностей в рамках транзакции БД:
tx = tx.Model(models.Action{}).Where("ID = ?", 1).UpdateColumn("state", "COMPLETE")
tx = tx.Model(models.Claim{}).Where("ID = ?", 2).Update("some_field", nil)
Ожидаемые строки не обновляются, при включении ведения журнала используется db.LogMode(true)
и глядя на SQL, который генерирует GORM:
UPDATE "actions" SET "state" = 'COMPLETE' WHERE (ID = 2) AND (ID = 1)
UPDATE "claims" SET "some_field" = NULL WHERE (ID = 2) AND (ID = 1) AND (ID = 2)
Я не понимаю, откуда взялись эти дополнительные AND, единственный способ, которым я могу получить его для генерации желаемых запросов:
UPDATE "actions" SET "state" = 'COMPLETE' WHERE ID = 1
UPDATE "claims" SET "some_field" = NULL WHERE ID = 2
... означает добавить New()
, поэтому tx.New().Model....
Является ли добавление New () правильным способом сделать это?