当 运行 使用带有 Postgres 的 Go sqlx 包进行 UPDATE 查询时,您可以检索更新行的列表吗?
Can you retrieve a list of updated rows when running an UPDATE query using the Go sqlx package with Postgres?
我有一个查询,我正在 运行 使用带有 Postgres 数据库的 Go 的 sqlx 包(标准 database/sql 包的扩展)。它看起来像这样:
result, err := s.getDB(tx).Exec(`
UPDATE table_name
SET var_name = 0
WHERE var_name = 1;`)
if err != nil {
return nil, err
}
在不使用托管事务的情况下,如何检索更新行的列表?或者至少更新行的主键列表?
使用 PostgreSQL's RETURNING
clause 和 db.Query/db.Select
变体代替 Exec
,例如
//get the primary key of updated rows
db := s.getDB(tx)
results := []int{}
err = db.Select(&results, "UPDATE mytable SET var_name = 0 WHERE var_name = 1 RETURNING id")
要检索多个列,只需在 RETURNING
后列出列名,例如
rows, err := db.Queryx("UPDATE mytable SET var_name = 0 WHERE var_name = 1 RETURNING id,var_name,other_columns")
for rows.Next() {
//do something with the result
}
我有一个查询,我正在 运行 使用带有 Postgres 数据库的 Go 的 sqlx 包(标准 database/sql 包的扩展)。它看起来像这样:
result, err := s.getDB(tx).Exec(`
UPDATE table_name
SET var_name = 0
WHERE var_name = 1;`)
if err != nil {
return nil, err
}
在不使用托管事务的情况下,如何检索更新行的列表?或者至少更新行的主键列表?
使用 PostgreSQL's RETURNING
clause 和 db.Query/db.Select
变体代替 Exec
,例如
//get the primary key of updated rows
db := s.getDB(tx)
results := []int{}
err = db.Select(&results, "UPDATE mytable SET var_name = 0 WHERE var_name = 1 RETURNING id")
要检索多个列,只需在 RETURNING
后列出列名,例如
rows, err := db.Queryx("UPDATE mytable SET var_name = 0 WHERE var_name = 1 RETURNING id,var_name,other_columns")
for rows.Next() {
//do something with the result
}