16

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

PRAGMA table_info(myTable)

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

PRAGMA index_list(myTable)
PRAGMA foreign_key_list(myTable)

但我似乎无法弄清楚如何查看主键。有谁知道我该怎么做?

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

select * from sqlite_master where type = 'table' and name ='myTable';

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

4

2 回答 2

17

table_infoDOES 给你一个名为 pk (最后一个)的列,指示它是否是主键(如果是主键,则它在键中的索引)或不是(零)。

为了澄清,从文档中:

对于不属于主键的列,结果集中的“pk”列为零,对于属于主键的列,它是主键中的列的索引。

于 2012-05-06T16:28:21.370 回答
4

希望这对某人有所帮助:经过一些研究和痛苦,对我有用的命令是:

SELECT l.name FROM pragma_table_info("Table_Name") as l WHERE l.pk = 1;
于 2021-07-26T01:04:09.543 回答