2015-11-04 56 views
2

我需要的Postgres 9.4执行以下交易:Postgres的:TRUNCATE和COPY在一个事务

BEGIN TRANSACTION; 
    TRUNCATE TestTable; 
    COPY TestTable FROM '/DATAforTestTable' DELIMITER ',' CSV; 
END TRANSACTION; 

用户必须具有读取权限上执行交易的时间“旧”数据TestTable的不含有交易的等待结束。可能吗?或者我必须通过应对和重命名表来做到这一点?

+0

发生了什么事时,你试过吗? –

+0

我执行'select * from TestTable limit 5;'我只在结束事务或中断事务后才得到结果。 – Dimaf

回答

2

manual

TRUNCATE获取在每个表中的ACCESS EXCLUSIVE锁它操作上,这在桌子上阻止所有其他并行操作。

使用delete

begin; 
delete from t; 
+0

是的。我试图使用删除和它的作品。非常感谢! – Dimaf