【发布时间】:2019-08-27 11:43:49
【问题描述】:
我使用 PostgresQL 和 Go。我有一张名为users 的表。我尝试编写一个能够更新几列的函数。此函数采用列名和用户对象(类型结构)。你能帮我解决这个问题吗?
这是 Go 中的用户结构:
type User struct {
ID int json:"id"
Username string json:"username"
Password string json:"password"
FirstName string json:"first_name"
LastName string json:"last_name"
Email string json:"email"
}
这是创建用户表的 SQL 脚本:
create table "users"
(
id serial not null
constraint user_pk
primary key,
username varchar(64) not null,
password varchar(128) not null,
first_name varchar(64) not null,
last_name varchar(64) not null,
email varchar(64) not null
);
第一个例子:我可以传递first_name & last_name + 完整的用户对象(postgres 应该只更新这两个字段)
第二个例子:我可以通过 first_name & email & username + 完整的用户对象(postgres 应该只更新这 3 个字段)
我试过用地图来做,但我做不到:
func UpdateUser(db *sql.DB, m map[string]interface{}) (*User, error) {
for key, value := range m {
}
err := db.QueryRow(UPDATE "users" SET ())
}
【问题讨论】:
-
您能展示一下到目前为止您已经尝试过什么以及遇到了什么问题吗?
-
@Adrian,问题已更新
-
问题是我不知道postgres应该更新什么和多少字段
-
如果您收到要更新的字段列表,那么您确实知道要更新的字段和数量,对吧?
标签: sql postgresql go