データベースが 3 回のログインの失敗に気付いた場合に、テーブル内のすべての行を削除するトリガーや SP を作成する必要があります。奇妙なことに、これを実行するとトリガーが毎回起動し、SP も起動しますが、SP はログインに 3 回失敗した最初のレコードのみを削除します。したがって、ログインに3回失敗すると、トリガーはspを呼び出してレコードを削除しますが、テーブルに別のレコードを追加して再度ログインに失敗すると、SPを再コンパイルしない限りレコードは削除されません。失敗した別のログインを実行します。
現在、私はこれをトリガーとして持っています
create or replace
TRIGGER TRIG_Failed_Login
after servererror on database
BEGIN
If (ORA_IS_SERVERERROR(1017)) Then
insert into ERRORTRAP (errormessage, message_timestamp) VALUES ('Failed Login - 1017', current_timestamp);
commit;
BEGIN
sp_trucate_keystore();
END;
END IF;
End;
そしてこれをSPとして:
create or replace
PROCEDURE sp_Trucate_KeyStore is
RECORD_COUNT NUMBER;
begin
SELECT COUNT(*) INTO RECORD_COUNT FROM ERRORTRAP;
BEGIN
IF RECORD_COUNT >= 3 THEN
INSERT INTO errortrap (errormessage) VALUES ('this is a test');
DELETE FROM KEYSTORE;
COMMIT;
END IF;
END;
END;
どんな助けでも大歓迎です。