0
1

CREATE TABLE ~ AS SELECT ~; にてテーブル作成したら、忘れずに主キーを設定すること

Posted at

結論

/** 例えば schema_a.table_a をこんな風に作ったとする **/
CREATE TABLE schema_a.table_a AS
SELECT
  row_number() over () AS rid,
  B.foo AS b_foo,
  B.bar AS b_bar,
  
FROM schema_b.table_b AS B
WHERE 
GROUP BY 
ORDER BY 
;
/** 既存テーブルへの主キー制約の追加 **/
ALTER TABLE schema_a.table_a ADD PRIMARY KEY (rid);

余談

主キー制約の名称も自分でつけたい

/** 既存テーブルへの主キー制約の追加(名称指定) **/
ALTER TABLE schema_a.table_a 
ADD CONSTRAINT pkey_table_a PRIMARY KEY (rid);

ADD PRIMARY KEY

ADD CONSTRAINT pkey_table_a PRIMARY KEY
に変わる
CONSTRAINT pkey_table_a が制約名を指定する箇所

CREATE TABLE AS ~ SELECT ~; するとカラムの型がbigint(int8)とかtextとかになる

カラムのデータ型をマメに指定したくなりますよね
先にCREATE TABLEしてから、INSERT INTO ~ SELECT ~した方がいいですね

参考

PostgreSQL 14.5文書 ALTER TABLE

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1