Как узнать, является ли столбец SQLite уникальным? (С SQL) - PullRequest
3 голосов
/ 11 ноября 2010

У меня есть таблица:

CREATE TABLE test( i INTEGER UNIQUE, j INTEGER UNIQUE, k TEXT );

pragma table_info(test);
       cid = 0
      name = i
      type = INTEGER
   notnull = 0
dflt_value = 
        pk = 0
...

Как узнать, является ли столбец "i" УНИКАЛЬНЫМ или нет.Спасибо

Ответы [ 4 ]

4 голосов
/ 31 мая 2012

С PRAGMA index_list(table_name); вы получаете имена всех индексов.

Если уникальный столбец имеет значение 1, это индекс уникального столбца.После этого с помощью PRAGMA index_info(index_name); вы получите имя соответствующего столбца для индексов.

Если ваш столбец находится в списке имен столбцов, он уникален.

1 голос
/ 31 мая 2012

Эта выбранная группировка не является точной.Если в таблице нет записей для группировки, вы останетесь без ответа, если согласно ТАБЛИЦЕ СХЕМЫ столбец уникален.Даже если во всех группах count (*) = 1, это не означает, что согласно схеме столбец является уникальным.

1 голос
/ 11 ноября 2010

См. этот вопрос и ответ, связанный с SO

sqlite> PRAGMA INDEX_LIST('test');
0|sqlite_autoindex_test_2|1
1|sqlite_autoindex_test_1|1
0 голосов
/ 28 октября 2011
SELECT COUNT(*),i FROM test
GROUP BY i
HAVING COUNT(*) > 1

-- select all rows from test table
-- group rows according to column i
-- find rows which are greater than 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...