Как извлечь удаленные записи?

#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. Не уверен, в чем причина снижения. Исходный запрос не слишком понятен, но когда я слышу «извлекать удаленные записи», я думаю о том, какие записи были только что удалены. Для этого команда ВОЗВРАТА идеально подходит для этого.