![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
"Таблица rowid" это любая таблица в схеме SQLite, которая:
Таблицы Rowid отличает то, что у них всех есть уникальный, не-NULL,
signed 64-bit integer
rowid,
который используется в качестве ключа доступа для данных в основном движке
хранения B-tree.
PRIMARY KEY
таблиц rowid (если есть) обычно является не истинным первичным ключом для
таблицы в том смысле, что это не уникальный ключ, используемый основным
движком хранения B-tree.
Исключение из этого правила: когда таблица rowid объявлена как
INTEGER PRIMARY KEY.
В исключении INTEGER PRIMARY KEY становится псевдонимом для
rowid.
Истинный первичный ключ для таблицы rowid (значение, которое
используется в качестве ключа, чтобы искать строки в основном движке
хранения B-tree) это
rowid.
Ограничение PRIMARY KEY для таблицы rowid
(поскольку это не истинный первичный ключ или INTEGER PRIMARY KEY)
является действительно тем же самым, как
ограничение UNIQUE.
Поскольку это не истинный первичный ключ, колонкам PRIMARY KEY позволяют быть
NULL в нарушении всех стандартов SQL.
К rowid в таблице rowid
можно получить доступ (или изменить), читая или записывая любую колонку из
"rowid" или "oid" или "_rowid _".
Кроме того, если есть заявленные колонки в таблице, которые используют те
специальные имена, тогда те имена обращаются к заявленным колонкам, а не к
основному rowid.
Доступ к отчетам через rowid
высоко оптимизирован и очень быстр.
Если rowid
не псевдоним INTEGER PRIMARY KEY,
это не постоянное и могло бы измениться. В особенности команда
VACUUM изменит rowid для таблиц, которые не
объявляют INTEGER PRIMARY KEY. Поэтому запросы не должны обычно получать
доступ к rowid непосредственно, вместо этого надо использовать
INTEGER PRIMARY KEY.
В основном формате файла каждый
rowid сохранен как
variable-length integer.
Это означает, что маленькие неотрицательные значения rowid занимают меньше
дискового пространства, чем большие или отрицательные значения rowid.
Все осложнения выше (и другие, не упомянутые здесь), являются
результатом потребности сохранить обратную совместимость для сотен из
миллиардов файлов базы данных SQLite, находящихся в обращении.
В прекрасном мире не было бы такой вещи, как "rowid" и все таблицы
будут после стандартной семантики, осуществленной как таблицы
WITHOUT ROWID,
только без дополнительных ключевых слов "WITHOUT ROWID".
К сожалению, жизнь грязна. Проектировщик SQLite приносит свои искренние
извинения за текущий беспорядок.
Choose any three.
Таблицы Rowid
1.0. Определение
Большинство таблиц в типичной схеме базы данных SQLite это таблицы rowid.
2.0. Хитрости