猿问

如何在 golang 中运行返回已删除实体 ID 的删除查询

询问 :

DELETE FROM *tableName* RETURNING *id*

如何在我的 golang 代码中运行这个查询?我试过

resp, err := pgConnPool.Exec(context.Background(), deleteQuery)

但它给出了 pgConn.CommandTag(可用于获取 rowsCount 但不是实际行)


湖上湖
浏览 100回答 1
1回答

梦里花落0921

查询没问题(只需确保它以 结尾RETURNING *id*)。假设您只删除一个实体,您可以QueryRow按照@mkopriva 的建议使用package yourpackageimport (  "context"  "github.com/google/uuid"  "github.com/jackc/pgx/v4")func YourMethod() {  // ...  var recordID uuid.UUID  err := pgConnPool.QueryRow(context.Background(), deleteQuery).Scan(&recordID)  if err != nil {    // handle error.  }  // recordID now contains the id of the deleted record.}或者包裹在处理程序中package yourpackageimport (  "context"  "github.com/google/uuid"  "github.com/jackc/pgx/v4")func DeleteRecord(/*your args*/) (uuid.UUID, error) {  var recordID uuid.UUID  // build your deleteQuery object.  err := pgConnPool.QueryRow(context.Background(), deleteQuery).Scan(&recordID)  return recordID, err}如果你想增加一次删除多条记录的可能性package yourpackageimport (  "context"  "github.com/google/uuid"  "github.com/jackc/pgx/v4")func DeleteRecords(/*your args*/) ([]uuid.UUID, error) {  var recordIDs []uuid.UUID  // build your deleteQuery object.  rows, err := pgConnPool.Query(context.Background(), deleteQuery)  if err != nil {    return nil, err  }  defer rows.Close()  for rows.Next() {    var recordID uuid.UUID    if err := rows.Scan(&recordID); err != nil {      return nil, err    }    recordIDs = append(recordIDs, recordID)  }  return recordIDs, rows.Err() // Ensure no reading error occurred  }
随时随地看视频慕课网APP

相关分类

Go
我要回答