Oracleの“ rowid”の概念を持つオープンソースのSQLデータベースはありますか?擬似列?
質問
MySQLとPostgreSQL [1]にはその概念がないことを知っているので、この概念を持つオープンソースのSQLデータベースがあることを知りたいと思います。
[1] PostgreSQLにはROWID疑似列があることが後で指摘されました。
解決
PostgreSQL
にはこの概念があります。
こちら を参照して、< code> PostgreSQL 、 ctid
のうち関心のあるもの:
ctid(タプル識別子)
データベース内のタプルの物理的な場所を記述する識別子。数字のペアはctidで表されます:ブロック番号、およびそのブロック内のタプルインデックス。
これは、 Oracle
の rowid
に直接類似しています。
MySQL
の場合、行の物理的な場所はフロントエンドで使用できません。
MyISAM
で、 rowid
は先頭からの単なるファイルオフセットであり、それがインデックスリーフに保存されます。
InnoDB
では、テーブルは設計によりインデックス構成
されます。つまり、テーブルには常に何らかの種類の主キーがあり、 InnoDB
テーブルは、その PRIMARY KEY
を行ポインターとして使用します。
これは、 rowid
がブロック内のブロックへの物理ポインターではない Oracle
の index organized
テーブルにも当てはまります。データファイルではなく、 logical ROWID
または UROWID
Oracle
の INDEX ORGANIZED
テーブルから ROWID
を選択すると、異なる形式(< code> * BAEBwPICwQL + )。これは実際にはエンコードされた PRIMARY KEY
値です。
PRIMARY KEY
として列を定義していない場合、 MySQL
は隠しサロゲート PRIMARY KEY
を作成します。制御することはありません。
そのため、 InnoDB
テーブルに何らかの種類の PRIMARY KEY
を常に作成する必要があります。無料で、列を制御できます。
他のヒント
どちらも実行していない場合、他のユーザーは実行しません。
SQLiteには自動インクリメントされた「ROWID」があります。 ROWID、_ROWID、またはOIDを使用してアクセスできる列。整数の主キーを定義すると、エイリアスが作成されます。