我正在开发一个发出 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 第 2 版及更高版本 - 默认情况下,否,但存在称为基于版本的重定义的替代方案
- 旧版本的 Oracle - 否; DDL 导致隐式提交
- SQL Server - 是
- Sybase Adaptive Server - 是
- DB2 - 是
- Informix - 是
- Firebird(Interbase)- 是
SQLite 似乎也有事务 DDL。我能够在 SQLite 中ROLLBACK
CREATE TABLE
语句。它的 CREATE TABLE
文档没有提及任何特殊的事务“陷阱”。
关于sql - 是否可以回滚主要 SQL 数据库中的 CREATE TABLE 和 ALTER TABLE 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4692690/