PostgreSQL事務可以包含DML、DDL、DCL
阿新 • • 發佈:2019-01-07
- 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 獅子歌歌