PG中的DDL支持回滚

1    842    7

Tags:

👉 本文共约858个字,系统预计阅读时间或需4分钟。

简介

在Oracle或MySQL中,当执行到DDL语句时,会隐式的将当前回话的事务进行一次“COMMIT”操作,因此在MySQL或Oracle中执行DDL语句时,应该严格地将DDL和DML完全分开,不能混合在一起执行。

在PG中,多数DDL语句是可以被回滚的,但是有一些DDL语句例如CREATE INDEX CONCURRENTLY、CREATE DATABAE 、CREATE TABLESPACE等则不能回滚。

什么是Transactional DDL?

Transactional(事务)在关系型数据库是指一组SQL语句,要么提交,要么全部回滚。事务中包含的语句通常是DML语句,如INSERT、UPDATE、DELETE等。但是对于DDL语句呢?是否可以在事务中包含诸如CREATE、ALTER、DROP等DDL命令?

所谓Transactional DDL就是我们可以把ddl放到事务中,做到事务中的ddl语句要么全部提交,要么全部回滚

Transactional DDL的好处

在进行一些模式升级等复杂工作时,可以利用此功能保护数据库。我们可以将所有更改都放入事务块中,确保它们都以原子方式应用,或者根本不应用。这大大降低了数据库因模式更改中的输入错误或其他此类错误而损坏数据库的可能性。

Oracle

在Oracle的一个事务中,DDL语句不会被回滚。

MySQL

在MySQL的一个事务中,DDL语句不会被回滚。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

1 条回复

  1. Avatar photo 小麦苗说道:

    人大金仓的数据库和PG一样,都可以进行DDL回滚!

发表回复