当前位置:  开发笔记 > 数据库 > 正文

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

如何解决《如何确定SQLite索引是否唯一?(使用SQL)》经验,为你挑选了2个好方法。

我想通过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命令会显示.



1> finnw..:
PRAGMA INDEX_LIST('table_name');

返回一个包含3列的表:

    seq 索引的唯一数字ID

    name 索引的名称

    unique唯一性标志(如果是UNIQUE索引,则为非零).

然后循环遍历生成的行,直到您看到要查询的索引的名称(遗憾的是,您不能JOINseq语句中包含子句.)



2> Christian Da..:

既然没有人得到一个好的答案,我认为最好的解决方案是:

如果索引以"sqlite_autoindex"开头,则它是单个UNIQUE列的自动生成索引

否则,在表sqlite_master的sql列中查找UNIQUE关键字,如下所示:

SELECT*FROM sqlite_master WHERE type ='index'AND sql LIKE'%UNIQUE%'


第一点不太正确。如果索引以“ sqlite_autoindex”开头,则它是主键的自动生成的索引。但是,如果PK是多个列,则“单个UNIQUE列”不正确。我在这里有一个综合PK的观点,即两个列在一起是唯一的(但单独不是)。
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有