我必须为已删除的列捕获行。我怎样才能做到这一点而不必编写选择查询?
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;
这只是一个例子——你应该修改它来做你需要的任何事情。
分享和享受。