如何确定SQLite列是否唯一? (使用SQL)

时间:2010-11-11 20:40:37

标签: sql sqlite

我有桌子:

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”UNIQUE与否。 感谢

4 个答案:

答案 0 :(得分:4)

使用PRAGMA index_list(table_name);,您将获得所有索引的名称。

如果唯一列的值为1,则为唯一列的索引。之后使用PRAGMA index_info(index_name);获取索引的相应列的名称。

如果您的列位于列名列表中,则它是唯一的。

答案 1 :(得分:1)

请参阅this SO related question and answer

sqlite> PRAGMA INDEX_LIST('test');
0|sqlite_autoindex_test_2|1
1|sqlite_autoindex_test_1|1

答案 2 :(得分:1)

此选择分组不准确。如果要分组的表中没有记录,则根据TABLE SCHEMA,该列是唯一的,您将无法回答。即使所有组都有count(*)= 1,但这并不意味着根据模式,该列是唯一的。

答案 3 :(得分:-1)

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