OracleのROWID
OracleのROWIDについて解説します。
Oracleのテーブルには疑似列「ROWID」があります。これはテーブルを作成すると、内部的に作られる疑似列です。
Oracleの「ROWID」は疑似列という名前のとおり、仮の列・隠し列になっており、通常は表示されません。
「ROWID」は行のアドレスになっています。ある意味、真の「キー」なんですね。
ROWIDの特徴
OracleのROWIDの特徴はこのようになっております。
- ROWIDは検索が速い
- ROWIDは一意
- ROWIDは更新できない
Oracleは索引でも内部的にROWIDを使っています。ROWIDは検索が速いのが特徴です。
そして、ROWIDは18桁の1意な文字列です。18桁の中には、データオブジェクト番号、相対ファイル番号、ブロック番号、行番号などを含んでいます。
またROWIDはORACLE内部で処理されるため、SELECTはできますがINSERTやUPDAETはできません。
ROWIDの注意点
ROWIDは変わることがあるので注意が必要です。例えば、行を削除してバックアップから戻す場合などはROWIDが変わる可能性があります。
なのでROWIDを元にした処理は注意が必要です。
ROWIDを取得する
--ROWIDを取得できない SELECT * FROM emp;
SELECTで「*」としてもROWIDは表示されません。
--ROWIDは取得できる SELECT rowid,empno FROM emp;
rowid | empno |
AAAACOAABAAAAWJAAA | A001 |
AAAACOAABAAAAWJAAB | A002 |
AAAACOAABAAAAWJACZ | A003 |
ROWIDをSELECTする場合は、このように「ROWID」を明示しないといけません。
以上、OracleのROWIDとは?疑似列って何?を解説しました。
コメント