削除された列の行をキャプチャする必要があります。選択クエリを記述せずにそれを行うにはどうすればよいですか?
delete from myschema.mytable where currentdatetimestamp > columnDate
これにより、たとえば5行が削除されます
上記のファイルの影響を受けたファイルで、columnID (テーブルのすべての列ではない) の行をキャプチャしたい
1234 1235 1236 1237
1238
DELETE ステートメントのRETURNING 句を使用できます( Oracle Docs のこの例を採用)。
DECLARE
TYPE NumList IS TABLE OF myschema.mytable.columnID%TYPE;
IDs NumList;
BEGIN
DELETE FROM myschema.mytable WHERE currentdatetimestamp > columnDate
RETURNING columnID BULK COLLECT INTO IDs;
DBMS_OUTPUT.PUT_LINE('Deleted ' || SQL%ROWCOUNT || ' rows:');
FOR i IN IDs.FIRST .. IDs.LAST
LOOP
DBMS_OUTPUT.PUT_LINE('columnID: '||IDs(i));
END LOOP;
END;
/
得られた ID のコレクションを使用して、好きなことを行うことができます。
DELETE トリガーを使用して、必要なことを実行できる場合があります。次に例を示します。
CREATE OR REPLACE TRIGGER MY_TABLE_DELETE_TRIGGER
BEFORE DELETE ON MY_TABLE
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('Deleted row with ID=' || :OLD.COLUMN_ID);
END MY_TABLE_DELETE_TRIGGER;
これは単なる例です。必要に応じて変更する必要があります。
共有してお楽しみください。