PostgreSQLで使ってて気付いたこととかをメモるところ
随時更新するよ.
LIKEによるテーブル定義の流用
- 名前の意味
- tblname: 作成するテーブル名
- parent: DDLを流用する元テーブル名
- tblname: データをつっこむテーブル名
- pkeycol: PRIMARY KEYに指定したカラム名(複数カラムに指定した場合は,多分,それら全部要る)
-
やりかた
CREATE TABLE tblname (LIKE parent);
-
注意
- 上の文ではPRIMARY KEYとかコメントとかついてこないので,振り直さないとだめ.
- DEFAULT値とかはLIKE句の後ろにdefaultとかつけたらコピーできる.
- 詳しくはCREATE TABLEとか参照.
-
おまけ
-
PRIMARY KEYを指定する場合
ALTER TABLE tblname ADD PRIMARY KEY (pkeycol);
-
コメントをつける場合は
COMMENT ON TABLE tblname IS '←というテーブルを作ったそうな'; COMMENT ON COLUMN tblname.pkeycol IS '←これPRIMARY KEYだから';
-
なければINSERT,重複する場合はUPDATE
- 名前の意味
- tblname: データをつっこむテーブル名
- pkeycol: PRIMARY KEYに指定したカラム名(複数カラムに指定した場合は,多分,それら全部要る)
- colname: データを入れたいカラム名
- pkeyval: pkeycolのカラムに入れる値
- value: colnameのカラムに入れる値
-
やりかた
INSERT INTO tblname (pkeycol,colname) VALUES (pkeyval,value) ON CONFLICT ON CONSTRAINT pkeyname DO UPDATE SET colname = value;
-
注意
- CONSTRAINTで指定するPRIMARY KEYが必要.そらそーだ.
-
おまけ
- ちなみにMySQLでは,こんな感じらしい.
レコードがなければINSERT,あればUPDATEをするSQL - Qiita
- ちなみにMySQLでは,こんな感じらしい.