“\ copy”命令在postgres中处理提交和回滚吗?

时间:2016-12-20 09:06:30

标签: postgresql postgresql-9.3

我正在尝试使用psql执行.sql文件。我在里面运行.sql文件,我写了以下查询\copy table name from .dumb。因此,如果命令失败,它将默认处理提交/回滚。或者我们需要照顾它。

2 个答案:

答案 0 :(得分:0)

如果\copy失败,交易将被中止,例如:

t=# \! cat s07
create table trans(i int);
copy s07 from '/no such file';
t=# begin;
BEGIN
t=# \i s07
CREATE TABLE
psql:s07:2: ERROR:  could not open file "/no such file" for reading: No such file or directory
t=# select * from trans;
ERROR:  current transaction is aborted, commands ignored until end of transaction block
t=# end;
ROLLBACK

答案 1 :(得分:0)

全部取决于您正在运行的PG版本。因为psql的默认值是自动提交。在较新的版本中,您无法将其设置为关闭。因此,每次成功手动发出的COPY或\ copy命令都会立即提交。