Существует ли база данных SQL с открытым исходным кодом, в которой используется концепция псевдостолбца Oracle «rowid»?

StackOverflow https://stackoverflow.com/questions/816234

  •  03-07-2019
  •  | 
  •  

Вопрос

Я знаю, что MySQL и PostgreSQL[1] делают нет У меня есть эта концепция, поэтому мне интересно узнать, существует ли база данных SQL с открытым исходным кодом, в которой есть эта концепция.

[1] Позже было отмечено, что в PostgreSQL есть псевдостолбец rowid.

Это было полезно?

Решение

PostgreSQL есть такое понятие.

Видеть здесь для краткого списка псевдостолбцов в PostgreSQL, из которых ctid вас интересует:

ctid (tuple identifier)

Идентификатор, описывающий физическое расположение кортежа в базе данных.Пара чисел представлена ​​ctid:номер блока и индекс кортежа внутри этого блока.

Это прямой аналог Oracle's rowid.

Что касается MySQL, физическое расположение строки недоступно для внешнего интерфейса.

В MyISAM, rowid это просто смещение файла от начала, и это то, что хранится в индексных листах.

В InnoDB, таблицы index organized по замыслу это означает, что у них всегда есть какой-то первичный ключ, а индексы по InnoDB таблица, используйте это PRIMARY KEY как указатель строки.

Это справедливо и для Oracle's index organized таблицы, для которых rowid это не физический указатель на блок в файле данных, а скорее так называемый logical ROWID, или UROWID

Если вы выберете ROWID из INDEX ORGANIZED стол в Oracle, вы увидите, что он имеет другой формат (что-то вроде *BAEBwPICwQL+).На самом деле это закодированный PRIMARY KEY ценить.

Обратите внимание: если вы не определили ни один столбец как PRIMARY KEY, MySQL создаст скрытый суррогат PRIMARY KEY над которым вы никогда не будете иметь никакого контроля.

Вот почему вам всегда следует создавать что-то вроде PRIMARY KEY в InnoDB стол:это бесплатно, и вы получаете контроль над колонкой.

Другие советы

если ни один из них этого не сделал, то никто другой этого не сделает.

SQLite имеет автоматически увеличенный " ROWID " столбец, к которому вы можете получить доступ, используя ROWID, _ROWID или OID. Если вы укажете целочисленный первичный ключ, они будут псевдонимами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top