Golang Go语言中求教 Beego 的 ORM 里的 InsertOrUpdate 方法怎么更新指定的列
Golang Go语言中求教 Beego 的 ORM 里的 InsertOrUpdate 方法怎么更新指定的列
不管是
Oconnect.InsertOrUpdate(nc, fmt.Sprintf("%s=%s+%s", "col_name", "col_name", "mock_value"))
还是
Oconnect.InsertOrUpdate(nc, fmt.Sprintf("%s=%s", "col_name", "mock_value"))
依然没用啊。。
求教
更多关于Golang Go语言中求教 Beego 的 ORM 里的 InsertOrUpdate 方法怎么更新指定的列的实战教程也可以访问 https://www.itying.com/category-94-b0.html
InsertOrUpdate 的意思是, 如果要插入的行已经存在,那就更新这条数据。 不能用来更新其他行的数据哦。
更多关于Golang Go语言中求教 Beego 的 ORM 里的 InsertOrUpdate 方法怎么更新指定的列的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
就是更新已存在的啊,我不想更新 created_at 的话,怎么做呢
如果是单纯想更新已存在的 update 不就行了,为什么要 InsertOrUpdate?
nc 中不存在 created_at 就不会更新了,如果还是更新了,你应该检查一下是生成的 sql 更新了这个字段,还是数据库的字段设置了在更新的时间更新

在Beego ORM中,InsertOrUpdate
方法提供了一种便捷的方式来在插入新记录或更新现有记录时处理数据。如果你只想更新指定的列而不是全部列,可以通过传递一个包含要更新字段的map
来实现。
下面是一个简单的示例,展示了如何使用 InsertOrUpdate
方法来更新指定的列:
import (
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
"your_project/models" // 替换为你的模型包路径
)
func UpdateSpecificColumns(id int, newName string, newAge int) error {
o := orm.NewOrm()
user := models.User{Id: id} // 假设User结构体有Id, Name, Age字段
// 创建一个map,包含要更新的字段
cols := map[string]interface{}{
"Name": newName,
"Age": newAge,
}
// 使用InsertOrUpdate方法,指定要更新的列
_, err := o.Raw("INSERT INTO user(id, name, age) VALUES(?, ?, ?) ON DUPLICATE KEY UPDATE name=VALUES(name), age=VALUES(age)", id, newName, newAge).Exec()
if err != nil {
return err
}
// 或者使用orm的InsertOrUpdate(注意:此方法会更新所有非零字段,所以需要手动指定)
// num, err := o.InsertOrUpdate(&user, cols)
// if err != nil {
// return err
// }
return nil
}
注意,直接使用 orm.InsertOrUpdate
方法会更新所有非零字段,因此,如果你只想更新部分字段,建议使用 orm.Raw
执行自定义SQL语句。