воскресенье, 9 сентября 2007 г.

Различия в работе с savepoint в Firebird и Interbase

Kovalenko Dmitry wrote:
>
> Родился вопрос. А в стандарте SQL (99) вроде как прописано понятие
> точек сохранения (SAVEPOINT).

Так точно.

> А прописано ли в нем что делать с точкой B в таком случае?
>
> 1. savepoint A;
> 2. savepoint B;
> 3. savepoint A;
> 4. в этой точке у нас savepoint B (по-стандарту) существует или нет?

Стандарт лишь говорит, что должен удалиться старый сейвпойнт А и
создаться новый с тем же именем.

> в IB savepoint "B" будет изничтожен

Судя по всему, IB неявно выполняет RELEASE SAVEPOINT A (который по
стандарту уничтожает все сейвпойнты от А до настоящего времени), в то
время как FB выполняет наше расширение: RELEASE SAVEPOINT A ONLY,
которое удаляет только данный сейвпойнт. Отсюда и разница.

Я считаю наше поведение правильным.

--
Дмитрий Еманов

Комментариев нет: