2012-05-06 2 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 (последний), указывающий, является ли он первичным ключом (если это так, указатель его в ключе) или нет (ноль).

Чтобы уточнить, из документации:

Столбец «рк» в результирующем наборе равен нуль для столбцов, которые не являются части первичного ключа, и является индексом столбца в первичном ключ для столбцов, которые являются частью первичного ключа.

+0

Ahhhhhh crap, я сделал предположение, которого я не должен был делать в базе данных, которую я использовал. Спасибо за указание на это! – Kyle

+0

Однако он не дает вам порядок столбцов составных первичных ключей. 'CREATE TABLE ReversePK ( INT NOT NULL, б INT NOT NULL, PRIMARY KEY (Ь, а) )' –

+3

Колонку рк в table_info не булево значение дает порядок столбцов. –

Смежные вопросы