DELETE時のトリガー起動でAFTER指定の場合、削除されたレコードの情報は取得できるのか?
に対しては、できますよ。:OLDというバインド変数を使えば取れます。
以下サンプルもご参考ください。
SQL
1-- 対象テーブル作成
2CREATE TABLE TEST(
3KEY VARCHAR2(5),
4VALUE VARCHAR2(20)
5);
6
7-- ログテーブル作成
8CREATE TABLE HIST(
9QUERY VARCHAR2(6),
10KEY VARCHAR2(5),
11TIME DATE
12);
13
14-- トリガー作成
15CREATE OR REPLACE TRIGGER TRG
16 AFTER INSERT OR UPDATE OR DELETE ON TEST
17 FOR EACH ROW
18 BEGIN
19 IF INSERTING THEN
20 INSERT INTO HIST VALUES('INSERT',:NEW.KEY,SYSDATE);
21 ELSIF UPDATING THEN
22 INSERT INTO HIST VALUES('UPDATE',:OLD.KEY,SYSDATE);
23 ELSIF DELETING THEN
24 INSERT INTO HIST VALUES('DELETE',:OLD.KEY,SYSDATE);
25 END IF;
26 END;
27/
28
29-- テーブル更新
30INSERT INTO TEST VALUES('K0001','A');
31INSERT INTO TEST VALUES('K0002','B');
32INSERT INTO TEST VALUES('K0003','C');
33UPDATE TEST SET VALUE = 'Z' WHERE KEY = 'K0002';
34DELETE FROM TEST WHERE KEY = 'K0003';
35
36-- ログテーブル確認
37SELECT * FROM HIST;
38
QUERY KEY TIME
INSERT K0001 18-02-20
INSERT K0002 18-02-20
INSERT K0003 18-02-20
UPDATE K0002 18-02-20
DELETE K0003 18-02-20
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。