выполним откат таблицы оракула с помощью rowid? - PullRequest
1 голос
/ 13 января 2012

Я выполняю откат таблицы оракула, используя rowId:

, поэтому перед каждым внедрением данных я записываю максимальный идентификатор строки таблицы.Если что-то пошло не так, я удалю из таблицы, в которой записан rowid> max rowid.

после выполнения удаления, я все еще могу видеть введенные записи.

пожалуйста, совет!

спасибо, Ричард

1 Ответ

3 голосов
/ 13 января 2012

A ROWID :

Глобально уникальный адрес для строки в базе данных.

Это , а не идентификатор, который будет увеличиваться для каждой новой строки. Новая строка может использовать ранее использованный ROWID, если строка с этим ROWID была удалена.

Также обратите внимание, что Oracle может повторно использовать старый блок, который был освобожден для новых строк (что приведет к снижению ROWID). Oracle также может получить экстенты в другом файле данных с меньшим номером, чем файл последнего ROWID. В большинстве случаев вы не можете точно контролировать, где ваши новые строки окажутся физически, поэтому вам не следует полагаться на увеличение ROWID.

Наконец, вы не должны зависеть от текущей реализации ROWID, она может измениться в будущих версиях.

Вы можете использовать последовательность или столбец отметки времени для определения новых записей. Или даже столбец флага.

...