我想通过 SQL 查询查明索引是否唯一。我正在使用 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)”创建一个索引。似乎没有 SQL 命令会显示我的新索引是否唯一。
最佳答案
PRAGMA INDEX_LIST('table_name');
返回一个包含 3 列的表格:
seq
索引的唯一数字 IDname
索引名称unique
唯一性标志(非零,如果UNIQUE
索引。)
编辑
从 SQLite 3.16.0 开始,您还可以使用表值 pragma 函数,它的优点是您可以JOIN
它们来搜索特定的表和列。参见 @mike-scotty's answer .
关于sqlite - 如何确定 SQLite 索引是否唯一? (使用 SQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/157392/