登录
首页 >  Golang >  Go问答

更新 PostgresQL 表中多个列的 Go 函数操作

来源:stackoverflow

时间:2024-03-14 21:24:32 176浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《更新 PostgresQL 表中多个列的 Go 函数操作》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

我使用 postgresql 和 go。我有一个名为 users 的表。我尝试编写一个能够更新多个列的函数。该函数采用列名和用户对象(结构类型)。你能帮我解决这个问题吗?

这是 go 中的 user 结构体:

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_namelast_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 ())
}

解决方案


使用更新 在示例中,我假设您已经编写了带有变量的函数。让我们假设变量是:

  • 名字
  • 姓氏

sql代码如下:

update users
set first_name = firstname, last_name= lastname
where [condition]

您可能会发现需要为此编写一个带有重载构造函数的类,以便它可以接受您想要的任意数量的变量。

或者更好的是为每一行编写一个函数:

UPDATE users
SET first_name = firstName
WHERE [condition] 

UPDATE users
SET last_name= lastName
WHERE [condition]

等等。这只是意味着用户必须一次输入一项。

https://www.w3schools.com/sql/sql_update.asp

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>