1. 程式人生 > >PostgreSQL事務可以包含DML、DDL、DCL

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

  • 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 獅子歌歌