Is it possible to roll back CREATE TABLE and ALTER TABLE statements in major SQL databases?

http://wiki.postgresql.org/wiki/Transactional_DDL_in_PostgreSQL:_A_Competitive_Analysis provides an overview of this issue from PostgreSQL’s perspective.

Is DDL transactional according to this document?

  • PostgreSQL – yes
  • MySQL – no; DDL causes an implicit commit
  • Oracle Database 11g Release 2 and above – by default, no, but an alternative called edition-based redefinition exists
  • Older versions of Oracle – no; DDL causes an implicit commit
  • SQL Server – yes
  • Sybase Adaptive Server – yes
  • DB2 – yes
  • Informix – yes
  • Firebird (Interbase) – yes

SQLite also appears to have transactional DDL as well. I was able to ROLLBACK a CREATE TABLE statement in SQLite. Its CREATE TABLE documentation does not mention any special transactional ‘gotchas’.

Leave a Comment