ポスグレのALTER文。忘れるからメモ。
カラムの型変更
ALTER TABLE テーブル名 ALTER COLUMN カラム名 TYPE 型;
型はこのへん?
smallint
integer
bigint
date
timestamp without time zone
character varying(40)
その他はこのへん。
https://www.postgresql.jp/document/9.3/html/datatype.html
カラム追加
ALTER TABLE テーブル名 ADD COLUMN カラム名 型 NOT NULL;
ALTER TABLE テーブル名 ADD COLUMN カラム名 型 ;
NULL制約設定
ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET NOT NULL;
NULL制約削除
ALTER TABLE テーブル名 ALTER COLUMN カラム名 DROP NOT NULL;
外部キー制約削除
ALTER TABLE テーブル名 DROP CONSTRAINT 外部キー名;
外部キー制約作成
ALTER TABLE ONLY テーブル名 ADD CONSTRAINT 外部キー名 FOREIGN KEY (xxx_no) REFERENCES 外部キーテーブル名(yyy_no);
テーブルのリネーム
ALTER TABLE 変更前の名前 RENAME TO 変更後の名前;
INDEXの名前変更
ALTER INDEX 変更前の名前 RENAME TO 変更後の名前;
主キー変更
ALTER TABLE テーブル名 DROP CONSTRAINT テーブル名_pkey;
ALTER TABLE テーブル名 ADD CONSTRAINT テーブル名_pkey PRIMARY KEY(xxx_no);
テーブルコメント
COMMENT ON TABLE テーブル名 IS 'コメント';
カラムコメント
COMMENT ON COLUMN テーブル名.カラム名 IS 'コメント';
テーブル一覧
select pg_stat_user_tables.relname as TABLE_NAME ,pg_description.description as TABLE_COMMENT
from pg_stat_user_tables ,pg_description
where pg_stat_user_tables.relname in ( select relname as TABLE_NAME from pg_stat_user_tables ) and pg_stat_user_tables.relid=pg_description.objoid and pg_description.objsubid=0
order by pg_stat_user_tables.relname
;
接続中セッションの確認
SELECT pid,* FROM pg_stat_activity where datname = 'DB名';
邪魔なセッションはキル!
SELECT pg_cancel_backend(12345);
SELECT pg_terminate_backend(12345);
以上