1

私はrowIdを使用してOracleテーブルのロールバックを実行しています:

したがって、各データ注入の前に、テーブルの最大行 ID を記録します。何か問題が発生した場合は、rowid > max rowid が記録されたテーブルから削除します。

削除が実行された後も、挿入されたレコードが表示されます。

ご意見をお聞かせください!

ありがとう、リチャード

4

1 に答える 1

3

ROWIDは次のとおりです。

データベース内の行のグローバルに一意のアドレス。

新しい行ごとにインクリメントされる識別子ではありません。この ROWID を持つ行が削除されている場合、新しい行は以前に使用された ROWID を使用できます。

また、Oracle は、新しい行のために解放された古いブロックを再利用できることに注意してください (結果として ROWID が低くなります)。Oracle は、最後の ROWID のファイルよりも小さいファイル番号を持つ別のデータ ファイルのエクステントを取得することもできます。ほとんどの場合、新しい行が物理的にどこに配置されるかを正確に制御することはできないため、ROWID の増加に依存するべきではありません。

最後に、ROWID の現在の実装に依存しないでください。将来のリリースで変更される可能性があります。

シーケンスまたはタイムスタンプ列を使用して、新しいレコードを識別できます。またはフラグ列ですら。

于 2012-01-13T16:11:08.407 に答える