ХП селектит таблицу и одновременно инсертит в нее. проблема
Добавлено: 06 май 2006, 09:38
День добрый всем!
Упрощенно задача такова:
нужно в таблицу вставлять записи , копирующие имеющиеся , но с изменением некоторых полей. Причем подлежат копированию записи , для которых измененных еще не существует .
пишем SP
/* выбираем записи по вышеописанным условиям*/
for select ... from table1 where .... and not exists(select .. from table1 where ...) into .... получаем (ключевые поля записи)
do
begin
insert into table1 ...
end
ПРОБЛЕМА:такое ощущение что после первого инсерта в теле цикла выборка изменяется !!! и часть записей оказывются не скопированными.
По моему разумению выборка должна быть статичной в течение всего цикла.Все-таки запрос каждый раз перевыполняется или нет ?
Упрощенно задача такова:
нужно в таблицу вставлять записи , копирующие имеющиеся , но с изменением некоторых полей. Причем подлежат копированию записи , для которых измененных еще не существует .
пишем SP
/* выбираем записи по вышеописанным условиям*/
for select ... from table1 where .... and not exists(select .. from table1 where ...) into .... получаем (ключевые поля записи)
do
begin
insert into table1 ...
end
ПРОБЛЕМА:такое ощущение что после первого инсерта в теле цикла выборка изменяется !!! и часть записей оказывются не скопированными.
По моему разумению выборка должна быть статичной в течение всего цикла.Все-таки запрос каждый раз перевыполняется или нет ?