I have a query I'm running using Go's sqlx package (an extension to the standard database/sql package) with a Postgres database. It looks something like this:
result, err := s.getDB(tx).Exec(`
UPDATE table_name
SET var_name = 0
WHERE var_name = 1;`)
if err != nil {
return nil, err
}
Without using a managed transaction, how can I retrieve the list of updated rows? Or at least a list of primary keys for the updated rows?
Use PostgreSQL's RETURNING
clause and db.Query/db.Select
variants instead of Exec
, eg
//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")
To retrieve more than one columns, just list the column names after RETURNING
, eg
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
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.