我有一个 PostgreSQL 数据库,其中包含许多相同结构的表,总共 36 列:
CREATE TABLE some_schema.some_table (
id integer NOT NULL DEFAULT nextval('some_schema.id_seq'::regclass),
col2,
col3,
col4,
[...],
col35,
mi_prinx integer NOT NULL DEFAULT nextval('some_schema.mi_prinx_seq'::regclass),
CONSTRAINT some_table_pkey PRIMARY KEY (mi_prinx)
)
在许多情况下,我将不得不从另一个具有相同结构的表中插入记录:
INSERT INTO some_schema.some_table (col2,col3...col35)
SELECT col2,col3...col35
FROM some_schema.another_table_with_same_structure;
有没有办法做到这一点而不必列出所有没有默认值的列?我想我可以DEFAULT VALUES
以某种方式使用,但我无法根据文档获得正确的语法。
*
不,您要么使用扩展插入所有列,或者,您只插入列出的列
您也可以使用
DEFAULT
显式,但没有人这样做。然而,在规范中,显式或隐式列列表中不存在的每一列都将填充一个默认值,要么是其声明的默认值,要么是 null 如果没有。明确看起来像这样。DEFAULT COLUMNS
将所有列设置为其各自的默认值。从上的文档DEFAULT COLUMNS
,