他のバージョンの文書 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

46.4. トランザクション管理

SPI_commit — 現在のトランザクションをコミットします。
SPI_rollback — 現在のトランザクションを中断します。
SPI_start_transaction — 新たなトランザクションを開始します

COMMITROLLBACKといったトランザクション制御コマンドをSPI_executeなどのSPI関数を通して実行することはできません。 しかしながら、SPIを通してトランザクション制御ができる別のインタフェース関数があります。

どこで呼び出されるかという文脈を考慮することなく、ユーザ定義された任意のSQL呼び出し可能な関数でトランザクションを開始・終了することは、一般的に安全でも思慮のあることではありません。 例えば、SQLコマンドの一部の複雑なSQL式の一部である関数中のトランザクションブロックは、おそらく不明瞭な内部エラーやクラッシュになります。 ここに示されるインタフェース関数は、CALL起動の文脈を考慮しており、主としてCALLコマンドから起動される手続き言語から使われることを意図しています。 SPIを使ったCで実装されたプロシージャは同じロジックを実装できますが、その詳細は本文書の範囲を超えます。