Зачем PRAGMA schema.index_list (имя-таблицы); не показывать первичные ключи? - PullRequest
0 голосов
/ 07 марта 2019

Согласно документации, PRAGMA schema.index_list(table-name); должен перечислять все индексы, включая первичные ключи.

Однако, когда я его использую, я получаю только вторичные индексы.

https://www.sqlite.org/pragma.html#pragma_index_info

Что может привести к тому, что первичные ключи не будут перечислены?

CREATE TABLE Employee
(
    EmployeeKey INTEGER PRIMARY KEY,
    FirstName nvarChar(25) NOT NULL,
    MiddleName nvarChar(25) NULL,
    LastName nVarChar(25) NOT NULL,
    Title nVarChar(100) null,
    EmployeeId nvarChar(50) NOT NULL,
    ManagerKey INT NULL REferences Employee(EmployeeKey),
    OfficePhone VARCHAR(15) NULL ,
    CellPhone VARCHAR(15) NULL ,
    CreatedDate DateTime NOT NULL DEFAULT CURRENT_TIME,
    UpdatedDate DateTime NULL
)

CREATE UNIQUE INDEX index_name ON Employee(EmployeeId);

1 Ответ

1 голос
/ 07 марта 2019

EmployeeKey не будет отображаться как индекс, так как это псевдоним столбца rowid .

  • Столбец rowid присущ всем таблицам, которые не определены как БЕЗ ROWID таблиц.
  • Столбец rowid можно считать индексом MASTER.

Если вы не указали INTEGER PRIMARY KEY в качестве ПЕРВИЧНОГО КЛЮЧА, например, вы указали EmployeeKey TEXT PRIMARY KEY, тогда индекс будет указан как SQLite, достаточно точно определяющий, что составляет псевдоним rowid (например, EmployeeKey INT PRIMARY KEY не является псевдонимом rowid, поэтому будет иметь индекс).

Возможно, вы захотите взглянуть на CREATE TABLE - Rowid .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...