SQLite查询以查找主键

Kyl*_*yle 12 sqlite schema primary-key

在SQLite中,我可以运行以下查询来获取表中的列列表:

PRAGMA table_info(myTable)
Run Code Online (Sandbox Code Playgroud)

这给了我列但没有关于主键可能是什么的信息.另外,我可以运行以下两个查询来查找索引和外键:

PRAGMA index_list(myTable)
PRAGMA foreign_key_list(myTable)
Run Code Online (Sandbox Code Playgroud)

但我似乎无法弄清楚如何查看主键.有谁知道我怎么能这样做?

注意:我也知道我可以这样做:

select * from sqlite_master where type = 'table' and name ='myTable';
Run Code Online (Sandbox Code Playgroud)

它将给出显示主键的create table语句.但我正在寻找一种方法来做到这一点,而无需解析create语句.

Mat*_*der 11

table_info确实给你指示,如果它是一个主键,一个名为PK列(最后一个)(如果是这样的它的键索引)或没有(零).

要从文档中澄清:

对于不属于主键的列,结果集中的"pk"列为零,并且是主键中作为主键一部分的列的列的索引.

  • table_info中的pk列不是布尔值,该值为您提供列顺序. (3认同)

小智 8

希望这对某人有帮助:经过一些研究和痛苦,对我有用的找到主键列名称的命令是:

SELECT l.name FROM pragma_table_info("Table_Name") as l WHERE l.pk = 1;
Run Code Online (Sandbox Code Playgroud)

  • 这仅返回第一个主键。将“WHERE l.pk = 1”更改为“WHERE l.pk <> 0”以获取所有主键。 (3认同)