Golang修改数据库不定字段问题求解

1. 运行环境

go 1.16
postgres数据库

2. 问题描述

一个数据库表有很多字段,但是前端修改时给的字段是随机的,并不会所有都修改。如下所示:

UPDATE user_customer
        SET user_name = $1, role = $2, company_name = $3, industry = $4,          sub_industry = $5, contacts = $6, phone = $7, trial_num = $8,             start_time = $9, end_time = $10, update_time = $11 
WHERE id = $12 AND admin_id = $13

不用gorm的情况下,就是纯原生sql语句,大家都是怎么解决的?都是拼接sql语句字符串吗?如果是的话怎样拼接逻辑才是最好的?

讨论数量: 2

试试这个

sql := fmt.Sprintf("update  user_customer SET user_name = %s, role = %s ... ", $1,$2...)
2年前 评论

定义一个slice,把需要更新的字段丢进去,最后合并一起试试?

    var m []string
    m = append(m, " user_name = :1 ")
    m = append(m, " role = :2 ")
    attr := strings.Join(m, "AND")
    fmt.Println(attr)
    sql := fmt.Sprintf("UPDATE user_customer SET %s WHERE id = $12 AND admin_id = $13", attr)
    fmt.Println(sql)
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!