根据文档,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);
答案 0 :(得分:1)
EmployeeKey 将不会显示为索引,因为它是 rowid 列的别名。
如果您不将INTEGER PRIMARY KEY
指定为PRIMARY KEY,例如您指定了EmployeeKey TEXT PRIMARY KEY
,则索引将被列出,因为SQLite非常详细地说明了 rowid 的别名(例如EmployeeKey INT PRIMARY KEY不是rowid的别名) ,因此会有一个索引)。
您不妨看一下CREATE TABLE - Rowid。