0

削除された列の行をキャプチャする必要があります。選択クエリを記述せずにそれを行うにはどうすればよいですか?

delete from myschema.mytable where currentdatetimestamp > columnDate 

これにより、たとえば5行が削除されます

上記のファイルの影響を受けたファイルで、columnID (テーブルのすべての列ではない) の行をキャプチャしたい

1234
1235
1236
1237

1238

4

2 に答える 2

1

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 のコレクションを使用して、好きなことを行うことができます。

于 2012-09-08T04:09:58.320 に答える
0

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;

これは単なる例です。必要に応じて変更する必要があります。

共有してお楽しみください。

于 2012-09-08T01:31:51.593 に答える