Postgresql Postgres:在一个事务中截断和复制

Postgresql Postgres:在一个事务中截断和复制,postgresql,transactions,copy,truncate,Postgresql,Transactions,Copy,Truncate,我需要在Postgres 9.4中执行以下事务: BEGIN TRANSACTION; TRUNCATE TestTable; COPY TestTable FROM '/DATAforTestTable' DELIMITER ',' CSV; END TRANSACTION; 在执行事务时,用户必须具有对TestTable中“旧”数据的读取权限,而无需等待事务结束。可能吗?或者我必须通过处理和重命名表格来执行此操作?来自: TRUNCATE在其操作的每个表上获取访问独占锁,这

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

BEGIN TRANSACTION;
    TRUNCATE TestTable;
    COPY TestTable FROM '/DATAforTestTable' DELIMITER ',' CSV;
END TRANSACTION;
在执行事务时,用户必须具有对TestTable中“旧”数据的读取权限,而无需等待事务结束。可能吗?或者我必须通过处理和重命名表格来执行此操作?

来自:

TRUNCATE在其操作的每个表上获取访问独占锁,这将阻止该表上的所有其他并发操作

使用
delete

begin;
delete from t;

尝试时发生了什么?我执行TestTable limit 5中的
select*并且我只有在结束事务或中断其后才能得到结果。是。我尝试过使用delete,它很有效。非常感谢你!