3

MySQLとPostgreSQL[1]にはその概念がないことを知っているので、その概念を持っているオープンソースのSQLデータベースがあることを知りたいと思います。

[1]PostgreSQLにはrowid疑似列があることが後で指摘されました。

4

3 に答える 3

5

PostgreSQLこの概念があります。

の疑似列の簡単なリストについては、ここを参照してください。PostgreSQLそのうちctid、興味のあるものは次のとおりです。

ctid (tuple identifier)

データベース内のタプルの物理的な場所を説明する識別子。番号のペアは、ctid(ブロック番号、およびそのブロック内のタプルインデックス)で表されます。

Oracleこれは、の直接の類似物ですrowid

についてMySQLは、フロントエンドの行の物理的な場所は利用できません。

MyISAMrowidは最初からオフセットされたファイルであり、それがインデックスリーフに格納されます。

ではInnoDB、テーブルはindex organized設計によるものです。つまり、テーブルには常に何らかの主キーがあり、InnoDBテーブルのインデックスはそれPRIMARY KEYを行ポインタとして使用します。

Oracleこれは、のindex organizedテーブルにも当てはまります。このテーブルの場合rowid、aはデータファイル内のブロックへの物理ポインタではなく、、logical ROWIDまたはUROWID

のテーブルROWIDからを選択すると、別の形式(のようなもの)であることがわかります。これは実際にはエンコードされた値です。INDEX ORGANIZEDOracle*BAEBwPICwQL+PRIMARY KEY

列をとして定義していない場合は、非表示のサロゲートが作成されPRIMARY KEY、それを制御することはできません。MySQLPRIMARY KEY

そのため、常にテーブルに何らかの種類のを作成する必要がPRIMARY KEYありInnoDBます。これは無料で、列を制御できます。

于 2009-05-03T12:57:06.640 に答える
0

どちらもそれを行っていない場合、他の人はそれを行いません。

于 2009-05-03T03:26:25.170 に答える
0

SQLiteには、ROWID、_ROWID、またはOIDを使用してアクセスできる自動インクリメントの「ROWID」列があります。整数の主キーを定義すると、エイリアスが作成されます。

于 2009-05-03T03:30:16.457 に答える