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

标签 sqlite

我想通过 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 列的表格:

  1. seq 索引的唯一数字 ID
  2. name 索引名称
  3. unique 唯一性标志(非零,如果 UNIQUE 索引。)

编辑

从 SQLite 3.16.0 开始,您还可以使用表值 pragma 函数,它的优点是您可以JOIN 它们来搜索特定的表和列。参见 @mike-scotty's answer .

关于sqlite - 如何确定 SQLite 索引是否唯一? (使用 SQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/157392/

相关文章:

python - SQLite参数替换问题

带有 Sqlite 的 Android - 如何检查表是否存在以及是否为空

android - 我可以在 iOS 或 Android 手机上设置私有(private)且安全的 SQLite 数据库吗?

ruby-on-rails - Rails问题: Sqlite3 dll not found on windows (even the old 1. 2.3版本)

Android studio 模拟器 sqlite db 文件

objective-c - 我的更新语句不起作用

php - 我可以根据另一个表中的记录数对 SQL 查询结果进行排序吗?

android - 新行的损坏插入 ID

java - 如何获取数据库中 Android Java SQL 的最新时间值?

sqlite - 修改Sqlite表列NOT NULL为NULL