以下のようなテーブルが存在したとする。

テーブル名 : [MST_Magazine]

フィールド

項目名 備考
ID 数値 PK 連番でデータを格納
Publisher_ID 数値
Name 文字列

このようなテーブルではIDはシーケンスでの採番となる。

しかし、OracleではSQLServerのように、型として自動採番の型が存在しない。


そこで、トリガを用いて自動採番を行う。

CREATE OR REPLACE TRIGGER	TRG_MST_Magazine_ID
BEFORE Insert
ON MST_Magazine
FOR EACH ROW
BEGIN
    IF :NEW.ID  IS NULL THEN
        SELECT SEQ_Magazine_ID.NEXTVAL INTO :NEW.ID FROM DUAL;
    END IF;
END;

上記のトリガは、MST_MagazineテーブルへのInsert時に起動し、

InsertされたMST_Magazine.ID項目がNULLの場合、SEQ_Magazine_ID.Nextvalの値を使用する。


これにより、IDを指定せずMST_MagazineテーブルへのInsertを行った場合は自動で数値が採番される。