桁区切り

桁区切り

SELECT to_char(カラム, 'fm999,999,999') from テーブル

0埋めするときはfm000,000,000のような形。

右揃え

スペースにより左埋め10桁を作るとすれば、

SELECT lpad(文字列, 10, ' ') from テーブル

コメント・シェア

シーケンス

作成

CREATE SEQUENCE テーブル名_カラム名_seq;

CREATE TABLE テーブル名()において、idを連番にする場合には

id DEFAULT nextval('テーブル名_カラム名_seq')

で定義する。

なお、NOT NULLも付加するなら

id serial

と同じ。(シーケンスは自動的に作られる。)

カウンタの設定

100に連番をセットするには

SELECT setval('連番名_seq', 100);

とする。

現在の値

SELECT currval('連番名_seq', 100);

コメント・シェア

トリガー

目次

  1. トリガプロシージャ
  2. トリガーの作成
  3. トリガーの削除
  4. トリガーの一覧

トリガプロシージャ

指定したテーブルでINSERTUPDATEが行われたときに、あるテーブルに処理を施す。

CREATE FUNCTION 関数名()
RETURNS trigger
LANGUAGE plpgsql
AS $$
DECLARE
-- 変数の宣言
BEGIN
-- トリガーを引く方の変数をNEW.idやNEW.nameなどとして、あるテーブルへのINSERTやUPDATEの要素にする
RETURN NEW;
END
$$;

トリガーの作成

指定のテーブルにINSERTが実行されるとトリガーが引かれるようにするには、

CREATE TRIGGER 関数名_trigger AFTER INSERT ON テーブル名 FOR EACH ROW EXECUTE FUNCTION 関数名();
  • トリガイベントとしてはINSERTの他、UPDATEDELETEがある。
    • INSERT OR UPDATEとも書ける。
    • UPDATE OF col1, col2の形で、col1col2の少なくとも1列が更新された場合に起動できる。
  • FOR EACH ROWは対象行ごとに起動するが、デフォルトのFOR EACH STATEMENTではSQL文につき1回起動。

トリガーの削除

DROP TRIGGER 関数名_trigger ON テーブル名;

トリガーの一覧

SELECT * FROM information_schema.triggers;

コメント・シェア

一時テーブル

CREATE TABLEする際にTEMPを入れて

CREATE TEMP TABLE テーブル名 〜

のようにするとこのテーブルは一時テーブルとなり,接続を切ったときに削除される.

コメント・シェア

UPSERT

次の要領.

INSERT INTO テーブル VALUES 挿入値 
ON CONFRICT (コンフリクト判定に用いる列1, 列2)
DO UPDATE SET 更新値
WHERE 条件

コメント・シェア

連番を振る

PostgreSQLにおいてあるカラムで整列させるとき,連番を振るにはROW_NUMBER()を用いる.

ROW_NUMBER() OVER (ORDER BY カラム)

コメント・シェア

目次

  1. 主キー
    1. 追加
    2. 削除
  2. 一意性制約
    1. 追加
    2. 削除
  3. 非NULL制約
    1. 追加
    2. 削除
  4. チェック制約
    1. 追加
    2. 削除
  5. デフォルト値
    1. 追加
    2. 削除

主キー

追加

ALTER TABLE テーブル名 ADD CONSTRAINT 制約名 PRIMARY KEY(カラム名);

制約名は例えばテーブル名_pkey

削除

ALTER TABLE テーブル名 DROP CONSTRAINT 制約名;

一意性制約

追加

ALTER TABLE テーブル名 ADD CONSTRAINT 制約名 UNIQUE(カラム名);

制約名は例えばテーブル名_カラム名_unique

削除

ALTER TABLE テーブル名 DROP CONSTRAINT 制約名;

非NULL制約

追加

ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET NOT NULL;

削除

ALTER TABLE テーブル名 ALTER COLUMN カラム名 DROP NOT NULL;

チェック制約

追加

たとえば、

ALTER TABLE テーブル名 ADD CHECK (カラム名 > 条件式);

削除

ALTER TABLE テーブル名 DROP CONSTRAINT テーブル名_カラム名_check;

デフォルト値

追加

デフォルト値をゼロにするなら、

ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET DEFAULT 0;

削除

ALTER TABLE テーブル名 ALTER COLUMN カラム名 DROP DEFAULT;

コメント・シェア

  • page 1 of 1
著者の絵

ねこせんせい

One cat just leads to another.
(Ernest Hemingway)


色鉛筆塗り


校正室