簡體   English   中英

使用帶有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包(標准數據庫/ 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的RETURNING子句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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM