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

2024-05-11

我想通过 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”)。

还有其他建议吗?

Edit:上面的示例是针对自动生成的索引,但我的问题是关于一般索引的。例如,我可以使用“CREATE UNIQUE INDEX index1 ON access (user, date)”创建一个索引。似乎没有 SQL 命令会显示我的新索引是否是唯一的。


PRAGMA INDEX_LIST('table_name');

返回一个包含 3 列的表:

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

Edit

从 SQLite 3.16.0 开始,您还可以使用表值杂注函数,其优点是您可以JOIN他们搜索特定的表和列。看@mike-scotty 的回答 https://stackoverflow.com/a/53629321/12048.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确定 SQLite 索引是否唯一? (使用 SQL) 的相关文章

  • Android中BaseColumns有什么用

    实现一个类有什么用BaseColumns在安卓中 The BaseColumns http developer android com reference android provider BaseColumns html接口提供了非常常见
  • 如何在 Xamarin.Forms 上使用 System.Data.SQLite Interop.dll?

    每次尝试运行移动应用程序时 我都会遇到以下问题 System DllNotFoundException SQLite Interop dll assembly
  • 使用Python处理Sqlite数据库中的换行符“\n”?

    我有一个名为 test db 的 Sqlite 数据库 其中包含两个表 其结构如下 表 1 ID 整数主键自动增量 名称 varchar 500 颜色 varchar 500 表2 ID INTEGER PRIMARY KEY AUTOIN
  • 实体框架 SQLite 错误 1:“没有这样的表:__EFMigrationsHistory”

    我在 Windows 和 Linux 上运行 EF Core 并且在两者上都遇到相同的问题 public string DbPath get string DbPath Environment GetFolderPath Environme
  • Hibernate + SQLite 不创建数据库

    这是我的问题 我有一个使用 JavaFX Hibernate SQLite 的桌面应用程序 这是我的模型 Entity Table name usuario public class Usuario implements AbstractM
  • SQLite 使用循环重新编号 ID

    您好 我有一个包含许多插入行的表 我需要按 id 对所有行重新编号并排序 我找到了这段代码 但它对我不起作用 SET i 100 UPDATE main Categories SET ID i i 1 WHERE Name White AL
  • SQLite:从命令行仅将模式转储到 .sql 文件中

    我正在尝试转储架构test db仅 即没有数据 到名为的文件中schema sql从 OS X 中的命令行 无需启动 sqlite3 我知道我能做到 sqlite3 open test db output schema sql schema
  • 使用 RSQLite 在 R 中加载 SQLite 表

    我有这个函数用来加载 SQLite 表 sqLiteConnect lt function database table library DBI library RSQLite con lt dbConnect SQLite dbname
  • Zend_Cache_Backend_Sqlite 与 Zend_Cache_Backend_File

    目前我正在使用 Zend Cache Backend File 来缓存我的项目 尤其是来自外部 Web 服务的响应 我在想是否能找到将结构迁移到 Zend Cache Backend Sqlite 的一些好处 可能的优点是 文件系统有序 缓
  • 无法读取第 0 行,第 -1 列

    我正在尝试复制使用 SQLite 管理器创建的数据库 我在其中执行了以下操作 CREATE TABLE android metadata locale TEXT DEFAULT en US and INSERT INTO android m
  • Android 上的 SQLite JDBC 驱动程序

    我正在尝试使用xerial sqlite jdbc在 Android 中管理我的数据库没有成功 我得到了java lang NoClassDefFoundError org sqlite SQLiteConnection异常 我已经导入了这
  • SQLite 中的 where 子句在 android 中不起作用:(

    当尝试在 SQLite 中查询某些数据时 我遇到了一个恼人的错误 这是我的代码 Cursor cursor db query TABLE IMAGES new String id name compareToThis null null n
  • Cordova SQLite 保存 BLOB

    我的 Cordova SQLite 插件有问题 如何将 BLOB 图像保存到 SQLite 我在 JS 中有 BLOB 对象 Blob size 96874 type image jpeg proto Blob length 1 我试图拯救
  • Python Tkinter 自动完成组合框与 LIKE 搜索?

    我正在尝试使用预定义的值填充 Tkinter 组合框以供选择 它正在填充 我可以输入并获得建议 然而 为了做到这一点 我必须明确知道前几个字符 如果我知道字符串中间或末尾的一些文本 它是没有用的 因为组合框只执行 LIKE 搜索而不是 LI
  • PHP 5 的 SQLite 编译设置是什么?

    SQLite 3 7 附带了新的预写日志记录 WAL http www sqlite org wal html并且有很多设置可以被配置 http www sqlite org compile html 但是 似乎没有任何方法可以改变任何事情
  • sqlite 增量真空仅删除一个空闲页面

    我已将 sqlite 数据库的 auto vacuum PRAGMA 值更改为 INCRMENTAL 当我跑步时PRAGMA incremental vacuum 通过 DB Browser for SQlite 应用程序 它释放了free
  • 如何在sqlite中添加特定数量的空行?

    我有一个SQLite文件 我想添加2550 empty NULL rows 我可以使用此代码添加一个空行 INSERT INTO my table DEFAULT VALUES 但我需要 2550 行 有什么捷径吗 我不想执行相同的代码 2
  • 多级排序

    我有一个表 其中包含一些记录 其中包含名称 评级等字段 我首先想要根据评级将结果限制为 20 进行排序 然后在此结果集上想要进一步应用基于名称的排序 我知道要排序我们需要使用像这样的查询 Select from table order by
  • 如何获取列名列表

    是否可以像这样获取包含表的所有列名的行 id foo bar age street address 我不喜欢用Pragma table info bla SELECT sql FROM sqlite master WHERE tbl nam
  • ListView 和 CursorAdapter 对于大量数据的性能问题

    我在 sqlite 表中有大约 4k 行 表有 7 列 我用自己的 CursorAdapter 创建了工作 ListView 查询是这样的SELECT FROM table ORDER BY column DESC 表有第一列 id INT

随机推荐