Откат изменений базы данных с использованием неявных точек сохранения? - Oracle - PullRequest
0 голосов
/ 17 февраля 2012

Можно ли откатить изменения в базе данных, используя неявные точки сохранения? Я закончил вносить изменения (INSERTs) через мой Java-код, который я хотел бы вернуть обратно.

Ответы [ 2 ]

3 голосов
/ 17 февраля 2012

Взгляните на Использование технологии Oracle Flashback . Предполагая, что ваша база данных уже настроена для этого, вы можете вспомнить время до вставки. Однако будьте осторожны, если другие пользователи также обновляют эту таблицу. Кроме того, рекомендуется только, если вы допустили ошибку и вручную ее перепрограммируете, я бы не стал встраивать это в какой-либо код, чтобы автоматически это делать.

3 голосов
/ 17 февраля 2012

Вы можете использовать SAVEPOINT, как описано в Как совершить, транзакции Oracle ROLLBACK .

Вот фрагмент SAVEPOINT из него ...

SAVEPOINT

Specify a point in a transaction to which later you can roll back.

Example

insert into emp (empno,ename,sal) values (109,’Sami’,3000);
savepoint a;
insert into dept values (10,’Sales’,’Hyd’);
savepoint b;
insert into salgrade values (‘III’,9000,12000);

Now if you give

rollback to a;

Then  row from salgrade table and dept will be roll backed. Now you can commit the row inserted into emp table or rollback the transaction.

If you give

rollback to b;

Then row inserted into salgrade table will be roll backed. Now you can commit the row inserted into dept table and emp table or rollback to savepoint a or completely roll backed the transaction.

If you give

rollback;

Then the whole transactions is roll backed.

If you give

commit;

Then the whole transaction is committed and all savepoints are removed.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...