Eu tenho um banco de dados PostgreSQL com muitas tabelas da mesma estrutura, 36 colunas no total:
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)
)
Em muitos casos terei que inserir registros de outra tabela com a mesma estrutura:
INSERT INTO some_schema.some_table (col2,col3...col35)
SELECT col2,col3...col35
FROM some_schema.another_table_with_same_structure;
Existe uma maneira de fazer isso sem precisar listar todas as colunas que não possuem um valor padrão? Acho que posso usar DEFAULT VALUES
de alguma forma, mas não consigo acertar a sintaxe com base na documentação .
Não, você insere todas as colunas usando a
*
expansão,Ou você insere apenas as colunas listadas
Você também pode usar
DEFAULT
para ser explícito, mas ninguém faz isso. No entanto, está na especificação, cada coluna não presente na lista de colunas explícita ou implícita será preenchida com um valor padrão, seja seu valor padrão declarado ou nulo, se não houver nenhum. Ser explícito se parece com isso.DEFAULT COLUMNS
define todas as colunas para seus respectivos padrões. A partir dos documentosDEFAULT COLUMNS
,