第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

是否可以在一筆交易中調(diào)用 Go 函數(shù)?

是否可以在一筆交易中調(diào)用 Go 函數(shù)?

Go
一只萌萌小番薯 2022-05-18 13:39:12
我在 PostgreSQL 中存儲(chǔ)了一個(gè)雙鏈表。我有一個(gè) Go API 來(lái)管理這個(gè)列表。有一個(gè)函數(shù)可以創(chuàng)建新的Node(在特定位置)。假設(shè)其中有一個(gè) INSERT SQL 查詢。此外,還有一個(gè)刪除Node(按 id)的功能。假設(shè)其中有一個(gè) DELETE SQL 查詢。眾所周知,如果您需要將 a 移動(dòng)Node到不同的位置,您應(yīng)該調(diào)用 DeleteNode() 函數(shù)和 CreateNode() 函數(shù)。所以有第三個(gè)函數(shù)叫做 MoveNode()func MoveNode() error {  if err := DeleteNode(); err != nil {    return err  }  if err := CreateNode(); err != nil {    return err  }  return nil}但是這些函數(shù)(位于 MoveNode() 內(nèi)部)應(yīng)該在一個(gè)事務(wù)中調(diào)用。有沒有辦法在 Go 中“合并”函數(shù)?或者解決這個(gè)問(wèn)題的方法是什么(除了從2個(gè)函數(shù)復(fù)制和粘貼代碼到第三個(gè))?ps 這個(gè)想法很簡(jiǎn)單:你有兩個(gè)函數(shù)執(zhí)行一些 SQL 查詢,你需要在一個(gè)事務(wù)中執(zhí)行這些查詢(或在一個(gè)事務(wù)中調(diào)用 2 個(gè)函數(shù))
查看完整描述

1 回答

?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

解決此問(wèn)題的更好方法是將 tx.Commit() 移到查詢執(zhí)行函數(shù)之外(此處為 DeleteNode() 和 CreateNode())


建議的解決方案:


func MoveNode() error {

   tx, err := db.Begin()

   // err handling


  res, err := DeleteNode(tx)

  // err handling


  res, err := CreateNode(tx)

  // err handling


  tx.Commit()

}


func DeleteNode(transactionFromDbBegin) (responseFromExec, errorFromExec) {

    //...

}


func CreateNode(transactionFromDbBegin) (responseFromExec, errorFromExec) {

    //...

}

這應(yīng)該可以解決問(wèn)題。


查看完整回答
反對(duì) 回復(fù) 2022-05-18
  • 1 回答
  • 0 關(guān)注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)