我想通过SQL查询找出索引是否为UNIQUE.我正在使用SQLite 3.
我尝试了两种方法:
SELECT * FROM sqlite_master WHERE name = 'sqlite_autoindex_user_1'
这将返回有关索引的信息("type","name","tbl_name","rootpage"和"sql").请注意,当SQLite自动创建索引时,sql列为空.
PRAGMA index_info(sqlite_autoindex_user_1);
这将返回索引中的列("seqno","cid"和"name").
还有其他建议吗?
编辑:上面的示例是针对自动生成的索引,但我的问题是关于索引的一般情况.例如,我可以使用"CREATE UNIQUE INDEX index1 ON visit(user,date)"创建索引.如果我的新索引是UNIQUE,似乎没有SQL命令会显示.
PRAGMA INDEX_LIST('table_name');
返回一个包含3列的表:
seq
索引的唯一数字ID
name
索引的名称
unique
唯一性标志(如果是UNIQUE
索引,则为非零).
然后循环遍历生成的行,直到您看到要查询的索引的名称(遗憾的是,您不能JOIN
在seq
语句中包含子句.)
既然没有人得到一个好的答案,我认为最好的解决方案是:
如果索引以"sqlite_autoindex"开头,则它是单个UNIQUE列的自动生成索引
否则,在表sqlite_master的sql列中查找UNIQUE关键字,如下所示:
SELECT*FROM sqlite_master WHERE type ='index'AND sql LIKE'%UNIQUE%'