亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在數據庫插入后取回行值?

如何在數據庫插入后取回行值?

Go
HUWWW 2022-10-17 16:08:30
我正在使用 Golang 將數據插入數據庫。基本上我的查詢如下所示var cols = "(col1, col2, col3)"var values = "($1, $2, $3)"var query = fmt.Sprintf("INSERT INTO %s %s VALUES %s", myTable, cols, values)res, err := db.Exec(query, thing.val1, thing.val2, thing.val3)唯一可用的內容res是 lastInsertId 和受影響的行數。但我需要的是受影響的行。原因是我將數據插入到具有 AUTOINCREMENT id 列的 psql 數據庫中 - 所以我希望將數據連同它一起返回。例如 - 使用 Java hibernate 我可以做這個答案解釋的事情。我不必重新查詢數據庫的 ID。編輯:我嘗試使用 lastInsertId 方法并收到此錯誤此驅動程序不支持 LastInsertId
查看完整描述

2 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

假設您只想要一個名為的列中的自動遞增值,這是使用pq 驅動程序id的插入


var cols = "(col1, col2, col3)"

var values = "($1, $2, $3)"

var query = fmt.Sprintf(

    "INSERT INTO %s %s VALUES %s RETURNING id",

    myTable, cols, values,

)

var id int

if err := db.QueryRow(

    query,

    thing.val1, thing.val2, thing.val3,

).Scan(&id); err != nil {

    panic(err)

}

fmt.Println("ID: ", id)

對于多個插入:


var cols = "(col1, col2, col3)"

var values = "($1, $2, $3),($4, $5, $6)"

var query = fmt.Sprintf(

    "INSERT INTO %s %s VALUES %s RETURNING id",

    myTable, cols, values,

)

var ids []int

rows, err := db.Query(

    query,

    thing.val1, thing.val2, thing.val3,

    thing.val4, thing.val5, thing.val6,

)

if err != nil {

    panic(err)

}

for rows.Next() {

    var id int

    if err := rows.Scan(&id); err != nil {

        panic(err)

    }

    ids = append(ids, id)

}

fmt.Println("IDs: ", ids)


查看完整回答
反對 回復 2022-10-17
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

res.LastInsertId()Postgres 驅動程序不支持。但是,它在 MySQL 驅動程序中受支持。


db.Exec()不會返回最后插入的 id,但db.QueryRow()會返回。


為了更好地理解,您可以參考此鏈接。


在這里,我添加了一個可能對您有所幫助的示例。


var id int

err := db.QueryRow("INSERT INTO user (name) VALUES ('John') RETURNING id").Scan(&id)

if err != nil {

...

}


查看完整回答
反對 回復 2022-10-17
  • 2 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號