0

在使用 创建的数据库转储中pg_dump,一些表DEFAULT在语句中有 s CREATE TABLE,即:

CREATE TABLE test (
  f1 integer DEFAULT nextval('test_f1_seq'::regclass) NOT NULL
);

但其他人有一个额外的ALTER声明:

ALTER TABLE ONLY test2 ALTER COLUMN f1 SET DEFAULT nextval('test2_f1_seq'::regclass);

这是什么原因?所有顺序字段都是用 type 创建的SERIAL,但在转储中它们看起来不同,我猜不出任何规则。

4

1 回答 1

0

不同的是,在第一种情况下,序列是由表列“拥有”的。

OWNED BY您可以在创建序列时使用该子句指定此依赖关系。当该列拥有时,将自动删除该列拥有的序列。

如果一个序列是通过 using 隐式创建的serial,它将归该列所有。

于 2019-03-06T07:29:09.727 回答