Oracle Database 「ORA-30509: クライアント・ログオフ・トリガーにAFTER型は使用できません。」が発生した場合の対処法

Oracle Database 「ORA-30509: クライアント・ログオフ・トリガーにAFTER型は使用できません。」が発生した場合の対処法

Oracle Databaseで、「ORA-30509: クライアント・ログオフ・トリガーにAFTER型は使用できません。」が発生した場合の対処法を記述してます。

環境

  • OS windows11 home
  • Oracle Database 21c Express Edition
  • SQL Developer 21.2.1.204

エラー本文

「ログオフ・トリガー」を作成時に発生。

次のコマンドの開始中にエラーが発生しました : 行 1 -
CREATE OR REPLACE TRIGGER trg1
AFTER LOGOFF ON DATABASE
BEGIN
 INSERT INTO LOGHISTORY values('LOGOFF',sysdate);
END;
エラー・レポート -
ORA-30509: クライアント・ログオフ・トリガーにAFTER型は使用できません。
30509. 00000 -  "client logoff triggers cannot have AFTER type"
*Cause:    An attempt was made to create a trigger that fires after
           logoff. This type of trigger is not supported.
*Action:   Do not attempt to create a trigger that fires after logoff.

原因

「ログオフ・トリガー」には「AFTER」は使用できないため

対処法

以下のように何かしらで「BEFORE」を使用する

CREATE OR REPLACE TRIGGER trg1
BEFORE LOGOFF ON DATABASE
BEGIN
 INSERT INTO LOGHISTORY values('LOGOFF',sysdate);
END;

ちなみに「INSTEAD OF」もエラーとなります。

次のコマンドの開始中にエラーが発生しました : 行 1 -
CREATE OR REPLACE TRIGGER trg1
INSTEAD OF LOGOFF ON DATABASE
BEGIN
 INSERT INTO LOGHISTORY values('LOGOFF',sysdate);
END;
エラー・レポート -
ORA-30513: INSTEAD OF型のシステム・トリガーを作成できません。
30513. 00000 -  "cannot create system triggers of INSTEAD OF type"
*Cause:    Only BEFORE or AFTER triggers can be created on system events.
*Action:   Change the trigger type to BEFORE or AFTER.