別のテーブルと同じ構造であるが追加の列を持つテーブルを作成する方法はありますか? この質問 から、次のコマンドでテーブルの構造をコピーできます。
CREATE TABLE new_table_name ( like old_table_name including all)
次に、ALTER TABLE new_table_name ADD COLUMN...
を使用して一度に1つずつ列を追加できますが、次のように、これをより簡潔に行う方法を探しています。
CREATE TABLE new_table_name ( like old_table_name including all), new_col1 new_col1_type, new_col2 new_col2_type,...
以下の構文を使用できます。
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
);
フィドルは here です
いいえ、これを行うための簡潔な方法はありません。だが ALTER TABLE
は複数の引数を受け入れることができ、
ALTER TABLE foo
ADD column bar int,
ADD column baz int;
実際、目標が簡潔であれば、SQLが理想的な言語になることはほとんどありません。
CREATE TABLE AS <query>
オプション。詳細は ドキュメント を参照してください。
-コードはPostgreSQLでテストされていません-
CREATE TABLE MyNewTable
AS
SELECT *, CAST (NULL AS INT) AS IntCol1, CAST( NULL AS VARCHAR(10)) AS StrCol2...
FROM MyOriginalTable
WITH NO DATA;