2012-05-06 83 views
8

SQLite中我可以運行下面的查詢來獲取表中的列的列表: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語句。

回答

8

table_info是否給你一個名爲pk(last one)的列,表示它是否是主鍵(如果是的話,它在索引中的索引)還是不是(零)。

爲了澄清,從文檔:

在結果集中的「PK」列是不屬於主鍵的 部分列零,並且是列在主索引 作爲主鍵一部分的列的鍵。

+0

Ahhhhhh廢話,我做了一個我不應該在我使用的數據庫上作出的假設。感謝您指出了這一點! – Kyle

+0

但是,它不會提供複合主鍵的列順序。 'CREATE TABLE ReversePK( 一個INT NOT NULL, b INT NOT NULL, PRIMARY KEY(B,A) )' –

+3

在table_info的PK列不是一個布爾值,該值給你列的順序。 –