本文共 735 字,大约阅读时间需要 2 分钟。
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博客 ” ,链接:http://blog.itpub.net/6906/viewspace-2158215/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/6906/viewspace-2158215/