1. ホーム
  2. sql

[解決済み] 主要なSQLデータベースでCREATE TABLEとALTER TABLEステートメントをロールバックすることは可能ですか?

2022-09-08 22:26:12

質問

DDLを発行するプログラムに携わっています。私は CREATE TABLE などのDDLをロールバックすることができるのか知りたいです。

  • Postgres
  • MySQL
  • SQLite
  • その他

各データベースがDDLでトランザクションを処理する方法を説明します。

どのように解決するのですか?

http://wiki.postgresql.org/wiki/Transactional_DDL_in_PostgreSQL:_A_Competitive_Analysis は、PostgreSQLの観点からのこの問題の概要を提供しています。

この文書によると、DDLはトランザクションなのでしょうか?

  • PostgreSQL - はい
  • MySQL - いいえ。DDL は暗黙のコミットを引き起こします。
  • Oracle Database 11g Release 2 以上 - デフォルトでは「いいえ」ですが、エディションベースの再定義という代替案が存在します。
  • Oracle の古いバージョン - いいえ。DDL は暗黙のコミットを引き起こします。
  • SQL Server - はい
  • Sybase Adaptive Server - はい
  • DB2 - はい
  • Informix - はい
  • Firebird (Interbase) - はい

SQLite も同様に、トランザクション DDL を持つようです。私は ROLLBACK a CREATE TABLE ステートメントをSQLiteで使用します。その CREATE TABLE のドキュメントには、特別なトランザクションの'gotchas'は書かれていません。