您的位置:首页 > 数据库

PostgreSQL事务可以包含DML、DDL、DCL

2017-12-15 17:48 495 查看
PostgreSQL一个事务中可以包含DML, DDL, DCL.

除了以下语句:

create tablespace

create database

使用concurrently并行创建索引

其他未尽情况略

(Oracle执行DDL前自动将前面的未提交的事务提交,所以Oracle不支持在事务中执行DDL语句)

这种情况和Oracle不同,oracle在执行ddl语句(如 drop table)会自动把事务提交掉。但是在Postgres里,ddl可以放到事务里进行。

废话不多说,举个例子:

postgres=# begin;
BEGIN
postgres=# drop table t ;
DROP TABLE
postgres=# rollback ;
ROLLBACK
postgres=# \d t
Table "public.t"
Column |  Type   |                   Modifiers
--------+---------+------------------------------------------------
id     | integer | not null default nextval('t_id_seq'::regclass)


个人觉得这是一个很好的特性,在进行关键操作,如 drop truancate 时,可以放到事务里进行。

By 狮子歌歌
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  postgresql 事务 dml