Postgresql pg_如何还原始终作为标识列生成的句柄?

Postgresql pg_如何还原始终作为标识列生成的句柄?,postgresql,Postgresql,如果我pg\u将--data only还原到如下表中: CREATE TABLE foo ( id int4 NOT NULL GENERATED ALWAYS AS IDENTITY, bar varchar ); id列会发生什么变化?生成的总是被忽略,并且从pg_dump文件插入ID,还是生成了新ID 文档在--仅数据标志下显示: 表数据、大型对象和序列值(如果存在于存档中)将被还原 此处的“序列值”是否包括始终作为标识生成的 我使用的是Postgres 11,但我想知道

如果我
pg\u将--data only
还原到如下表中:

CREATE TABLE foo (
    id int4 NOT NULL GENERATED ALWAYS AS IDENTITY,
    bar varchar
);
id
列会发生什么变化?生成的
总是被忽略,并且从
pg_dump
文件插入ID,还是生成了新ID

文档在
--仅数据
标志下显示:

表数据、大型对象和序列值(如果存在于存档中)将被还原

此处的“序列值”是否包括始终作为标识生成的


我使用的是Postgres 11,但我想知道,自从所有普遍支持的版本(>=9.5)以来,这种行为是否都是相同的。

对于
INSERT
,如果要从标识列中否决默认值,需要使用
重写系统值,但是对于
COPY
没有这样的限制

这使得
pg_dump
变得简单。下面是具有标识列的表的转储的示例:

/* section = pre-data */

CREATE TABLE laurenz.identity (
    id integer NOT NULL,
    value text NOT NULL
);

ALTER TABLE laurenz.identity ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY (
    SEQUENCE NAME laurenz.identity_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);

/* section = data */

COPY laurenz.identity (id, value) FROM stdin;
1   one
2   two
3   three
-10 weird
-5  also weird
\.

/* section = post-data */

SELECT pg_catalog.setval('laurenz.identity_id_seq', 3, true);
“这里的“序列值”是否包括始终作为标识生成的?”由于
IDENTITY
列在后台使用序列,我非常希望这样。