在使用pg_dump
创建的数据库转储中,某些表在DEFAULT
语句中包含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);
这是什么原因?所有顺序字段都是用类型SERIAL
创建的,但是在转储中它们看起来不同,因此我猜不到任何规则。
答案 0 :(得分:0)
区别必须是在第一种情况下,序列归表列“拥有”。
创建序列时,可以使用OWNED BY
子句指定此依赖项。列所拥有的序列将在该列存在时自动删除。
如果使用serial
隐式创建了一个序列,则该列将归该列所有。