Если ваша база данных не зарегистрирована, вы ничего не можете сделать. Выбрав незарегистрированную базу данных, те, кто ее создал, решили, что проблема такого рода не является проблемой. Единственный способ решить эту проблему - изменить режим базы данных на зарегистрированный, но это не то, что вы делаете случайно по прихоти - это изменение имеет множество последствий.
Предполагается, что ваша база данных зарегистрирована - здесь не имеет значения, буферизована ли она или нет буферизованной регистрации или (в основном) база данных MODE ANSI - тогда, если вы не установите изоляцию DIRTY READ, вы работаете с использованием по меньшей мере изоляции COMMITTED READ ( это будет уровень REPEATABLE READ от Informix, уровень SERIALIZABLE стандартного SQL, если база данных MODE ANSI).
Если вы хотите убедиться, что строки данных не изменились после того, как транзакция их прочитала, вам нужно работать с более высокой изоляцией - REPEATABLE READ. (Подробнее см. SET ISOLATION в руководстве. (Остерегайтесь номенклатуры для SET TRANSACTION ; есть раздел руководства о Сравнение SET ISOLATION и SET TRANSACTION и связанных с ним разделов.) Недостатком использования SET ISOLATION для повторяемого чтения (или SET SERACIZAL LEVEL ISOLATION LEVEL SERIALIZABLE) является то, что необходимые дополнительные блокировки уменьшают параллелизм - но дают вам лучшие гарантии о состоянии базы данных.