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