gpt4 book ai didi

postgresql - 如何防止GORM使用先前查询的参数

转载 作者:行者123 更新时间:2023-12-01 22:25:08 24 4
gpt4 key购买 nike

我正在使用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)开启日志记录,并查看GORM生成的SQL:
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()是执行此操作的正确方法吗?

最佳答案

您使用的是旧指针,这是多个where子句的原因。

你应该尝试一下

err := tx.Model(models.Action{}).Where("ID = ?", 1).UpdateColumn("state", "COMPLETE").Error
if err != nil {
tx.Rollback()
}
err = tx.Model(models.Claim{}).Where("ID = ?", 2).Update("some_field", nil).Error
if err != nil {
tx.Rollback()
}

关于postgresql - 如何防止GORM使用先前查询的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60405350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com