PostgreSQL 事務(wù)管理

2021-09-06 10:10 更新

在從頂層調(diào)用的過(guò)程中或者從頂層調(diào)用的匿名代碼塊(DO命令)中,可以控制事務(wù)。要提交當(dāng)前的事務(wù),可調(diào)用commit。要回滾當(dāng)前事務(wù),可調(diào)用rollback(注意不能通過(guò)spi_exec或類似的函數(shù)運(yùn)行SQL命令COMMIT或者 ROLLBACK。這類工作必須用這些函數(shù)完成)。在事務(wù)結(jié)束以后,一個(gè)新的事務(wù)會(huì)自動(dòng)開始,因此沒有獨(dú)立的函數(shù)用來(lái)開始新事務(wù)。

這里是一個(gè)例子:

CREATE PROCEDURE transaction_test1()
LANGUAGE pltcl
AS $$
for {set i 0} {$i < 10} {incr i} {
    spi_exec "INSERT INTO test1 (a) VALUES ($i)"
    if {$i % 2 == 0} {
        commit
    } else {
        rollback
    }
}
$$;

CALL transaction_test1();

當(dāng)一個(gè)顯式的子事務(wù)處于活躍狀態(tài)時(shí),事務(wù)不能被結(jié)束。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)