sql - 是否可以回滚主要 SQL 数据库中的 CREATE TABLE 和 ALTER TABLE 语句?

标签 sql transactions ddl create-table

我正在开发一个发出 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/

相关文章:

sql - 错误: could not create unique index DETAIL: Key (id)=(3105115) is duplicated

sql - 如何使用 100 条记录的表中每一行的不同值更新表中所有行的列

sql - Postgres - 找到数组的最小值

c# - 在 SqlBulkCopy 中使用 NHibernate 事务

原始事务回滚后Mysql触发器插入持久化

mysql - 在 MySQL 中使用来自 select 的索引创建一个临时表

sql - 为什么 select top ... order by 索引列仍然排序?

sql - 获取每组的前 1 行

java - 如何保证java中2个连续语句的线程安全?

hadoop - 通过 Bash Shell 创建 Hive 表错误