Порядок списка таблиц по умолчанию в Sqlite? - PullRequest
0 голосов
/ 16 апреля 2020

Каков порядок по умолчанию списка таблиц в sqlite?

У меня есть файл базы данных из syslog-ng (Linux syslog). Я на самом деле хочу перечислить таблицы в соответствии с их последовательностью создания.

SELECT name FROM sqlite_master WHERE type='table'

Когда я выполняю эту команду через скрипт оболочки, я получаю список таблиц в той последовательности, в которой они были созданы. Однако я хочу быть уверен, что это гарантированное поведение? Или есть вероятность, что я получу список таблиц в случайном порядке? Для меня важно знать, потому что я хочу сохранить самые последние таблицы и отбросить самые старые.

1 Ответ

0 голосов
/ 16 апреля 2020

Хочу быть уверенным, что это гарантированное поведение? Или есть ли вероятность, что я получу список таблиц в случайном порядке?

SQL таблицы представляют неупорядоченные наборы строк, что означает отсутствие какого-либо внутреннего порядка , Без предложения order by порядок, в котором возвращаются строки, равен undefined , что означает, что база данных может свободно упорядочивать строки по своему усмотрению.

Таким образом, нет гарантии, что порядок, в котором возвращаются строки, является последовательным при последующих выполнениях того же запроса.

Что касается, sqlite_master не хранит дату, когда была создана каждая таблица - и я не знаю других SQLite Системная таблица, которая будет содержать эту информацию.

В большинстве баз данных одним из вариантов будет установка триггера на операторах create table и сохранение информации в некоторой пользовательской таблице, но я думаю, что SQLite также не поддерживает этот тип триггера.

...