「Oracle」トリガー(trigger)を作成する方法

2021年8月30日

書式
1.CREATE OR REPLACE TRIGGER トリガー名 操作xxx
2.DECLARE 変数名 テーブル.項目%TYPE
3.BEGIN xxx END
使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
--トリガー名の定義
CREATE OR REPLACE TRIGGER EVAL_CHANGE_TRIGGER
AFTER INSERT OR UPDATE OR DELETE
--各行ごとの操作が鳥がの対象
ON USER_TBL FOR EACH ROW
DECLARE
--変数名cft
cft USER_TBL_LOG.action%TYPE;
BEGIN
--トリガー insert
IF INSERTING THEN
cft := 'Insert操作を行いました';
--トリガー update
ELSIF UPDATING THEN
cft := 'Update操作を行いました';
--トリガー delete
ELSIF DELETING THEN
cft := 'Delete操作を行いました';
END IF;
--外部のプロシジャーを実行
INSERT INTO USER_TBL_LOG (opdate, action)
VALUES (SYSDATE, cft);
END;
--トリガー名の定義 CREATE OR REPLACE TRIGGER EVAL_CHANGE_TRIGGER AFTER INSERT OR UPDATE OR DELETE --各行ごとの操作が鳥がの対象 ON USER_TBL FOR EACH ROW DECLARE --変数名cft cft USER_TBL_LOG.action%TYPE; BEGIN --トリガー insert IF INSERTING THEN cft := 'Insert操作を行いました'; --トリガー update ELSIF UPDATING THEN cft := 'Update操作を行いました'; --トリガー delete ELSIF DELETING THEN cft := 'Delete操作を行いました'; END IF; --外部のプロシジャーを実行 INSERT INTO USER_TBL_LOG (opdate, action) VALUES (SYSDATE, cft); END;
--トリガー名の定義
CREATE OR REPLACE TRIGGER EVAL_CHANGE_TRIGGER
  AFTER INSERT OR UPDATE OR DELETE
  --各行ごとの操作が鳥がの対象
  ON USER_TBL FOR EACH ROW
DECLARE
  --変数名cft
  cft  USER_TBL_LOG.action%TYPE;
BEGIN
  --トリガー insert
  IF INSERTING THEN
    cft := 'Insert操作を行いました';
  --トリガー update
  ELSIF UPDATING THEN
    cft := 'Update操作を行いました';
  --トリガー delete
  ELSIF DELETING THEN
    cft := 'Delete操作を行いました';
  END IF;
  
  --外部のプロシジャーを実行
  INSERT INTO USER_TBL_LOG (opdate, action)
    VALUES (SYSDATE, cft);
END;

 

Oracle

Posted by arkgame