Existe-t-il un moyen de créer une table qui a la même structure qu'une autre table, mais avec des colonnes supplémentaires? Depuis cette question , je peux copier la structure d'une table avec:
CREATE TABLE new_table_name ( like old_table_name including all)
Et puis je peux ajouter des colonnes une à la fois, avec ALTER TABLE new_table_name ADD COLUMN...
mais je cherche un moyen de le faire plus succinctement, comme:
CREATE TABLE new_table_name ( like old_table_name including all), new_col1 new_col1_type, new_col2 new_col2_type,...
Vous pouvez utiliser la syntaxe ci-dessous;
CREATE TABLE old_table_name (
id serial,
my_data text,
primary key (id)
);
CREATE TABLE new_table_name (
like old_table_name including all,
new_col1 integer,
new_col2 text
);
Le violon est ici
Non, il n'y a pas de méthode plus succincte pour le faire. Mais ALTER TABLE
peut accepter plusieurs arguments,
ALTER TABLE foo
ADD column bar int,
ADD column baz int;
Vraiment, si votre objectif est succinct, SQL n'est presque jamais un langage idéal.
Vous pouvez utiliser le CREATE TABLE AS <query>
option, comme détaillé dans documentation .
--Code non testé dans PostgreSQL--
CREATE TABLE MyNewTable
AS
SELECT *, CAST (NULL AS INT) AS IntCol1, CAST( NULL AS VARCHAR(10)) AS StrCol2...
FROM MyOriginalTable
WITH NO DATA;