Выполним откат таблицы оракула с помощью rowid?
Я выполняю откат таблицы оракула, используя rowId:
поэтому перед каждым внедрением данных я записываю максимальный идентификатор строки таблицы. Если что-то пошло не так, я буду удалять из таблицы, где записано rowid > max rowid.
после удаления я все еще вижу введенные записи.
пожалуйста посоветуй!
спасибо Ричард
1 ответ
ROWID это:
Глобально уникальный адрес для строки в базе данных.
Это не идентификатор, который будет увеличиваться для каждой новой строки. Новая строка может использовать ранее использованный ROWID, если строка с этим ROWID была удалена.
Также обратите внимание, что Oracle может повторно использовать старый блок, который был освобожден для новых строк (что приведет к снижению ROWID). Oracle также может получить экстенты в другом файле данных с меньшим номером файла, чем файл последнего ROWID. В большинстве случаев вы не можете точно контролировать, где ваши новые строки окажутся физически, поэтому вам не следует полагаться на увеличение ROWID.
Наконец, вы не должны зависеть от текущей реализации ROWID, она может измениться в будущих версиях.
Вы можете использовать последовательность или столбец отметки времени для определения новых записей. Или даже столбец флага.