Привет всем.

С наступившим, типа.

Я тут накатал тест, результаты которого меня заставили задуматься :)

В эксперте это воспроизводится таким образом.

1. Таблица с одной INTEGER-колонкой

2. Заполняем таблицу
execute block
as
declare variable n integer;
begin
n=1;
while(n<=100000)do
begin
 insert into TEST_TABLE_3197 (ID) VALUES (:n);

 n=n+1;
end
end

3. Открываем данные таблицы. У меня эксперт вывел первые 39 записей.

4. Вставляем (в гриде) новую запись (ID=999 999)

5. Нажимаем Ctrl+End для перехода на последнию запись

6. И видим нашу добавленную запись с ID=999 999

7. Идем обратно, в начало нашего множества. И там мы её тоже видим.

----
Ясный пень, я понимаю почему это происходит.

И не спасет никакой уровень изоляции. Ну только если вставку делать в другой транзакции. А читать в повторяемом чтении. Но это не всегда хорошо.

Либо перед первой вставкой форсированно загружать все множества. И тут тоже можно нарваться :)

----
Я правильно понимайт, что спасет только (та самая что и для insert from select) доработка со стороны сервера? :)))

Коваленко Дмитрий.

Ответить