MC>Мне предложили сделать версионность, т.е. на удаленной БД в таблице вводится колонка version, строки теперь только добавляются (а не добавляются и обновляются) с выставлением поля version на 1 больше версии при последнем удачном апдейте. В случае возникновения ошибки — производим откат, т.е. удаляем все строки с нужным номером версии. При выборке же данных (например показе прайс-листа на сайте) выбираем строку с максимальной версией, т.е. например в случае mysql так:
По-моему, вполне рабочий вариант. Можно его еще слегка упростить. Заводим поле status с двумя значениями — ready и new
1) Заливаем данные, указывая статус new
1.5) в случае ошибки удаляем их по статусу
2) Одной транзакцией (ваша БД умеет транзакции?) стираем данные со статусом ready и меняем статус оставшихся данных с new на ready
Если транзакции нельзя, можно слегка усложнить алгоритм.