sql >> データベース >  >> RDS >> Oracle

OracleのROWIDは内部でどのように生成されますか?

    「最小」のROWIDはおそらくそうではない テーブルから最初に挿入された行を常に提供します。 ドキュメント から引用するには :

    "など" ROWIDが変更される原因となる多くの理由があることを示します。これは、小さな例で簡単に示すことができます:

    create table tmp_test ( a number );
    insert into tmp_test values (1);
    select rowid, a from tmp_test;
    
    ROWID                       A
    ------------------ ----------
    AABo3AAFvAAAda6AAA          1
    alter table tmp_test move;
    select rowid, a from tmp_test;
    
    ROWID                       A
    ------------------ ----------
    AABo3BAFvAAAdbjAAA          1
    

    alter tableの後に気付くでしょう 操作唯一のROWIDが変更されました。

    ROWIDが変更される可能性があり、Oracleが「最も低い」ROWIDが常に最初に挿入される行になることを明示的に保証していない場合、必要に応じて、これを追跡する別の方法が必要です。タイムスタンプまたは増分シーケンスは正常です。

    データを参照せずに最初に挿入された行を見つけることは、かなり珍しい要件であるに違いありません。これを使用することを検討している場合は、理由をもう一度確認します。 これを行う必要があります。



    1. SQLServerでJSONドキュメントから重複キーを返す方法

    2. VS2010 データベース プロジェクトのデプロイ時に DefaultDataPath と DefaultLogPath を設定する

    3. 動的クエリからテーブルに挿入する方法は?

    4. Oracleオブジェクトはどのくらい広く使用されていますか?