Oracle DB 的 Trigger 範本


在 Oracle Database 中,

常用到的觸發 Trigger,

不外乎就是 Insert Trigger / Update Trigger / Delete Trigger,

以下大致提供我的 Trigger 範本,

方便大家在撰寫 DB Trigger 時, 可以快速上手 :
 Insert Trigger 範本
CREATE OR REPLACE TRIGGER "INS_<Table_Name>" AFTER INSERT ON "<Table_Name>"
FOR EACH ROW
DECLARE
V_ERRNO INTEGER;
V_ERRMSG VARCHAR2(200);
BEGIN
-- 使用 :NEW.<Column_Name> 運作

EXCEPTION
WHEN OTHERS THEN
V_ERRNO := -20002;
V_ERRMSG := '<錯誤訊息>';
RAISE_APPLICATION_ERROR( V_ERRNO, V_ERRMSG );
END;

 Update Trigger 範本
CREATE OR REPLACE TRIGGER "UPD_<Table_Name>" BEFORE UPDATE OF "<Column>","<Column2>",... ON "<Table_Name>"
FOR EACH ROW
DECLARE
V_ERRNO INTEGER;
V_ERRMSG VARCHAR2(200);
BEGIN
-- 使用 :NEW.<Column_Name> / :OLD.<Column_Name> 運作

EXCEPTION
WHEN OTHERS THEN
V_ERRNO := -20002;
V_ERRMSG := '<錯誤訊息>';
RAISE_APPLICATION_ERROR( V_ERRNO, V_ERRMSG );
END;

 Delete Trigger 範本
CREATE OR REPLACE TRIGGER "DEL_<Table_Name>" BEFORE DELETE ON "<Table_Name>"
FOR EACH ROW
DECLARE
V_ERRNO INTEGER;
V_ERRMSG VARCHAR2(200);
BEGIN
-- 使用 :OLD.<Column_Name> 運作

EXCEPTION
WHEN OTHERS THEN
V_ERRNO := -20002;
V_ERRMSG := '<錯誤訊息>';
RAISE_APPLICATION_ERROR( V_ERRNO, V_ERRMSG );
END;

 Insert/Update/Delete Trigger 範本
CREATE OR REPLACE TRIGGER "IUD_<Table_Name>" BEFORE INSERT OR DELETE OR UPDATE [OF "<Update_Column>"] ON "<Table_Name>"
FOR EACH ROW
DECLARE
V_ERRNO INTEGER;
V_ERRMSG VARCHAR2(200);
BEGIN
-- 新增
IF INSERTING THEN
-- 只能使用 :NEW.<Column_Name> 運作

-- 修改
ELSIF UPDATING THEN
-- 可以使用 :NEW.<Column_Name> / :OLD.<Column_Name> 運作

-- 刪除
ELSIF DELETING THEN
-- 只能使用 :OLD.<Column_Name> 運作

END IF;

EXCEPTION
WHEN OTHERS THEN
V_ERRNO := -20002;
V_ERRMSG := '<錯誤訊息>';
RAISE_APPLICATION_ERROR( V_ERRNO, V_ERRMSG );
END;

Related Posts Plugin for WordPress, Blogger...