Я пытаюсь использовать средство чтения данных SQL для перемещения записей из одной таблицы в таблицу архива.Я хочу сделать передачу запись-за-записью (вместо массового вставления и удаления), чтобы в случае возникновения ошибки был потерян минимальный объем данных (и его пришлось восстановить из резервной копии).
Мой вопрос: будет ли работать программа чтения SQL, если я удаляю записи после их чтения?Это, безусловно, самый простой и прямой способ сделать то, что я пытаюсь сделать.Приведет ли это к неожиданным ошибкам?
While myReader.Read // select * from tableA where older than 1 year record
insert the record into tableA_archive
delete the record from tableA
loop
Это выглядит примерно как цикл по списку, который вы изменяете в цикле - который, как я знаю, вызывает все виды головной боли в .net
for aItem in listA
if aItem fits criteria, send to list B and delete from listA
next
Есть ли причина не изменять базовую таблицу, когда читатель читает?Например, использует ли читатель определенные индексы для достижения записей, которые могут сместиться, если я начну удалять записи в середине цикла?