TRIGERで履歴テーブルの○○フラグを更新

履歴データを管理するテーブルでは最新のデータを特定する為に削除フラグや最新フラグなどを定義していることがあります。
データをINSERTして、その後で1世代前のデータのフラグをUPDATEする・・・という冗長な処理はTRIGERを使うことでINSERTのみで済ませることができます。

CREATE TABLE BLOG (
    ID       NUMBER,
    W_DATE   CHAR(8),
    TITLE    VARCHAR(128),
    CONTENTS VARCHAR(1024),
    DEL_FLG  CHAR(1) DEFAULT '0'
)
;
ALTER TABLE BLOG
    ADD PRIMARY KEY (ID)
;
CREATE OR REPLACE TRIGGER BLOG_I_TRIG
    BEFORE INSERT ON BLOG
    FOR EACH ROW
    BEGIN
        UPDATE
            BLOG
        SET
            DEL_FLG = '1'
        WHERE
            W_DATE = :NEW.W_DATE AND
            DEL_FLG = '0'
        ;
    END;
;