我們可以稍后創建數據庫事務并提交/回滾嗎?我的意思是我們不在同一臺機器/主機/服務器上提交/回滾。假設我們返回事務并讓其他人根據事務 ID 決定提交或回滾。我們如何在 Go 和 sql 庫中做到這一點?
1 回答

溫溫醬
TA貢獻1752條經驗 獲得超4個贊
不。
事務允許以原子方式執行一系列命令,例如,無需另一個命令獲取半更新的數據,并且無需另一個命令更改該系列命令中的底層數據。
這是您希望快速結束并完成的事情,因為它們鎖定了基礎表。
想象一下,如果您的事務是在表 A 中插入一行。您啟動事務,插入行,然后不提交或回滾。在您這樣做之前,沒有其他人可以使用表 A(除非在特殊情況下)。他們會坐在那里等待(阻塞)。如果并發事務嘗試以不同的順序將數據放入表中,您也可能會遇到死鎖 - 其中事務會自動回滾而無需用戶輸入。
Brent Ozar有一個很棒的視頻來解釋和展示死鎖- 值得單獨觀看,但也演示了如果你不提交交易會發生什么。
如果您想要一個排隊或批準更改的機制,您需要先構建它,例如,
將更改放入“隊列”以便稍后完成,或
進行數據更改,但在相關表的列中將它們標記為“草稿”。然后,您的其余代碼必須包括是否要包含草稿數據。
tl;dr 版本:數據庫中的事務是一種數據級功能,可確保您的數據保持一致。使用批準/等是在業務邏輯級別。
- 1 回答
- 0 關注
- 110 瀏覽
添加回答
舉報
0/150
提交
取消