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

在PostgreSQL中,一个事务能够包含DML、DDL和DCL操作,但不包括特定的如创建表空间、数据库以及并发创建索引等。与Oracle不同,PostgreSQL允许在事务中执行DDL语句,例如在执行关键操作如drop或truncate时,可以利用事务提供额外的安全保障。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 一个事务最大2^32条SQL(因为cmin,cmax的长度是4Bytes)
  • 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 时,可以放到事务里进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值