tanamonの稀に良く書く日記

KEEP CALM AND DRINK BEER

OracleとPostgreSQLのトランザクション処理の違い

 また、DDL(Data Difinition Language:テーブル操作)にも注意が必要です。Oracle DatabaseのDDLは暗黙コミットが実行されますが、PostgreSQLでは実行されないため、トランザクション中の「CREATE TABLE」のようなDDLロールバックすることが可能です。

dfltweb1.onamae.com – このドメインはお名前.comで取得されています。

ということは、導入時のDDLトランザクションにしてどこかで失敗したらロールバックする、ということができるのか。便利かも。

 さらに、トランザクション中にエラーが発生した場合の振る舞いも異なります。Oracleでは、いくつかのDMLを実行して途中でエラーを出しても、最後にCOMMITを行うと、正常に実行できたDMLについては処理が確定します。これに対し、PostgreSQLでは、BEGINの後に一度でもエラーを出すと、最後にCOMMITをしても、ROLLBACKしたのと同じ扱いになります。

dfltweb1.onamae.com – このドメインはお名前.comで取得されています。

これは覚えておかないと罠にはまりそう。