Oracle では、rowid はデータへのアクセスに使用されます。これは、テーブル内の行を一意にマークする疑似列です。テーブル内のデータの各行には一意の識別子があります。構文は「select rowid.. ." ;rowid は、物理テーブル内の行データの内部アドレスです。そのうちの 1 つは、データ テーブル内の行を含むブロックに格納されているデータ ファイルのアドレスを指し、もう 1 つは、物理テーブル内のこの行のアドレスを指します。データ行自体を直接見つけることができるデータ ブロック。
このチュートリアルの動作環境: Windows 10 システム、Oracle バージョン 12c、Dell G3 コンピューター。 Oracle の
rowid は、テーブル内の行を一意にマークするために使用される疑似列です。これは、物理テーブル内の行データの内部アドレスであり、データ テーブル内の行を含むブロックに格納されているデータ ファイルのアドレスと、データ テーブル内の行データを直接配置できる行の 2 つのアドレスが含まれます。データブロック内のデータ行自体のアドレス。
Oracle データベース テーブル内のデータの各行には一意の識別子 (ROWID) があり、通常は Oracle 内のデータにアクセスするために使用されます。 rowid は 10 バイトの記憶領域を必要とし、表示に 18 文字を使用します。この値は、Oracle データベース内の行の特定の物理的な場所を示します。 ROWID をクエリで使用すると、値がクエリ結果に含まれることを示すことができます。
AAAR1yAAHAAAAFkAAA の例
ここで、AAAR1y はデータベース オブジェクト番号、AAH はファイル ラベル、AAAAFk はブロック番号、および最後の 3 桁です。 AAA は行番号です。
Use select * from DEPT; 出力結果に ROWID 列は表示されません。これは、この列がデータベースの内部でのみ使用され、ROWID は通常疑似列と呼ばれるためです。
scott.emp のデータを選択して手動で変更する場合は、代わりに
select rowid,t.* from scott.emp t;
と記述する必要があります。 ## 直接。#
select * from emp;
select rowid,t.* from scott.emp t; select * from scott.emp for update;ROWID を使用して ORACLE 内のレコードを検索するのが最も速く、インデックス作成よりも速いため、最初に SELECT ROWID を使用して更新する行を選択し、それらを COLLECTION に入れてから、FORALL UPDATE を使用してバッチ更新により速度が向上します。この観点から見ると、他の方法よりも優れています。SELECT FOR UPDATE は、更新前にレコードをロックします。これは、データのフィルタリング時にデータの整合性が要求されるなど、複雑な並列クエリ更新プログラムで必要です。その他の方法はそうではありません。データの変更が許可されており、FOR UPDATE または SET TRANSACTION READ ONLY でロックされます。さらに、CURSOR の WHERE CURRENT OF CURSOR ステートメントでは、FOR UPDATE を SELECT に追加する必要があります。 推奨チュートリアル: 「
Oracle Video Tutorial」
以上がOracleでROWIDを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。