2015-01-30 2 views
0

Мне нужно вставить данные из xlm в 10 таблиц, иерархия такова, как показано ниже.Как откатить каждую вставку, если нет какой-либо проверки Отсутствует

  • T1 имеет ребенок таблицу T2
  • T2 имеет дочерние таблицы t3, t4, t5, t6 и т.д. до t10
  • Если какие-либо из проверки терпит неудачу в t3 к T10 выше t1, t2 таблице вставка должна откатить.

Я использую SavePoint, и если отображается какая-либо проверка, я откажусь от этой конкретной точки сохранения.

Мой вопрос здесь, нужно ли мне использовать 10 точек сохранения, чтобы откат транзакции всех таблиц или только одна точка сохранения достаточно?

+0

Установить точку сохранения в t2, и откат к t2, если точки сохранения вставки неудачу – Sathya

+0

@Sathya что, если проверка терпит неудачу на t8, это будет откат 7 столов вставки если мы установим точку сохранения в t2? – developer

+0

Да, будет. Но если вы создадите точку сохранения после T2, она не откажется от T2. –

ответ

1

Если какая-либо проверка завершилась с ошибкой в ​​t3 до t10 выше t1, вставка t2 таблиц должна откат.

Так вы имеете в виду, если что-то пойдет не так, вставляя в T3..T10, вы хотите, чтобы вся транзакция отката к исходной точке, т.е. любые вставки в T1 и T2 должны также откатить.

Тогда зачем создавать точку сохранения вообще. Просто введите ROLLBACK, он откатит все вставки, всю транзакцию.

В любом случае, если вам действительно нужно, тогда сначала создайте SAVEPOINT, прежде чем начинать транзакцию с T1. Теперь, если какая-либо проверка не удалась, ROLLBACK TO SAVEPOINT, который откатит всю транзакцию.

ROLLBACK TO SAVEPOINT означает любую транзакцию, которая произошла после того, как этот SAVEPOINT будет откат до этой точки сохранения.

Например,

SQL> SAVEPOINT A  

SQL> INSERT INTO TEST VALUES (1,'Savepoint A'); 

1 row inserted.  

SQL> SAVEPOINT B  

SQL> INSERT INTO TEST VALUES (2,'Savepoint B'); 

1 row inserted.  

SQL> ROLLBACK TO B;  

Rollback complete.  

SQL> SELECT * FROM TEST;  

ID MSG 
-------- ----------- 
1   Savepoint A 

Example source

Смежные вопросы