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

来源:互联网 发布:异世界淘宝女王txt 编辑:程序博客网 时间:2024/05/22 14:23
  • PostgreSQL一个事务中可以包含DML, DDL, DCL.

除了以下语句:

  • create tablespace

  • create database

  • 使用concurrently并行创建索引

其他未尽情况略

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

  • 这种情况和Oracle不同,oracle在执行ddl语句(如 drop table)会自动把事务提交掉。但是在Postgres里,ddl可以放到事务里进行。
  • 废话不多说,举个例子:
postgres=# begin;BEGINpostgres=# drop table t ;DROP TABLEpostgres=# rollback ;ROLLBACKpostgres=# \d t                         Table "public.t" Column |  Type   |                   Modifiers                    --------+---------+------------------------------------------------ id     | integer | not null default nextval('t_id_seq'::regclass)

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

By 狮子歌歌

原创粉丝点击