ITPub博客

首页 > 数据库 > PostgreSQL > Oracle vs PostgreSQL,研发注意事项(2)-DDL语句与事务

Oracle vs PostgreSQL,研发注意事项(2)-DDL语句与事务

原创 PostgreSQL 作者:husthxd 时间:2018-07-20 14:10:10 0 删除 编辑

Oracle执行 DDL语句如CREATE, DROP, RENAME, or ALTER时,会隐式提交事务;PG在执行这类语句时,不会提交事务,需显式提交。

--------------------------- Session A

drop table if exists t1;

-- 开启事务

begin;

-- 查询当前事务号

select txid_current(); 

-- 创建表&插入100w数据

create table t1(id int,c1 varchar(20));

-- 查询当前事务号

select txid_current(); 

insert into t1 select generate_series(1,1000000),'#TESTDATA#';

rollback;-- 回滚事务

select count(*) from t1;

提示:

ERROR: relation "t1" does not exist

LINE 1: select count(*) from t1;

如果是Oracle数据库,创建数据表成功后会隐式提交事务,插入数据后回滚,数据表仍会存在。

参考:

https://wiki.postgresql.org/wiki/Transactional_DDL_in_PostgreSQL:_A_Competitive_Analysis

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/6906/viewspace-2158215/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
ITPUB数据库版块资深版主,对Oracle、PostgreSQL有深入研究。

注册时间:2007-12-28

  • 博文量
    1602
  • 访问量
    4380193