Postgres:在一次交易中TRUNCATE和COPY

时间:2015-11-04 17:36:22

标签: postgresql transactions copy truncate

我需要在Postgres 9.4中执行以下事务:

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

用户必须具有对#34; old"的读取权限。 TestTable中的数据在执行事务时没有等待tansaction结束。可能吗?或者我必须通过复制和重命名表来做到这一点?

1 个答案:

答案 0 :(得分:3)

来自manual

  

TRUNCATE在其操作的每个表上获取一个ACCESS EXCLUSIVE锁,它会阻止表上的所有其他并发操作。

使用delete

begin;
delete from t;