#sql #oracle #oracle10g
#sql #Oracle #oracle10g
Вопрос:
Как извлечь удаленные записи. Я использую Oracle 10g.
Ответ №1:
У вас есть резервная копия перед удалением? …или вы можете попробовать использовать flashback (ВЫБЕРИТЕ ПО СОСТОЯНИЮ НА)
http://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_flashback.htm#ADFNS01003
Надеюсь, я правильно понял ваш вопрос.
Комментарии:
1. Спасибо @Lenny Edwards
Ответ №2:
Проведите некоторое исследование RETURNING
предложения: https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/returninginto_clause.htm
https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/collections.htm#BABHDGIG
Ссылка содержит полнофункциональный пример с UPDATE
инструкцией. Я уверен, что если вы потратили на это некоторое время, вы можете понять, как заставить его работать и с DELETE
оператором.
DECLARE
TYPE EmpRec IS RECORD (last_name employees.last_name%TYPE,
salary employees.salary%TYPE);
emp_info EmpRec;
emp_id NUMBER := 100;
BEGIN
UPDATE employees SET salary = salary * 1.1 WHERE employee_id = emp_id
RETURNING last_name, salary INTO emp_info;
DBMS_OUTPUT.PUT_LINE('Just gave a raise to ' || emp_info.last_name ||
', who now makes ' || emp_info.salary);
ROLLBACK;
END;
/
Комментарии:
1. Не уверен, в чем причина снижения. Исходный запрос не слишком понятен, но когда я слышу «извлекать удаленные записи», я думаю о том, какие записи были только что удалены. Для этого команда ВОЗВРАТА идеально подходит для этого.