sqlite> create table foo(x TEXT PRIMARY KEY, y TEXT UNIQUE);
sqlite> select * from sqlite_master;
table|foo|foo|2|CREATE TABLE foo(x TEXT PRIMARY KEY, y TEXT UNIQUE)
index|sqlite_autoindex_foo_1|foo|3|
index|sqlite_autoindex_foo_2|foo|4|
对于用户定义的索引,sqlite_master
的最后一列告诉我它们所在的列。但正如您所看到的,对于(非rowid)PRIMARY KEY
和UNIQUE
隐式创建的索引,此信息不存在。有没有可靠的方法告诉我哪个autoindex
是哪个?
答案 0 :(得分:2)
内部和显式创建的索引之间没有区别;您可以使用相同的PRAGMA(index_list,index_info,index_xinfo)获取有关它们的信息:
sqlite> pragma index_list(foo); seq name unique origin partial ---------- ---------------------- ---------- ---------- ---------- 0 sqlite_autoindex_foo_2 1 u 0 1 sqlite_autoindex_foo_1 1 pk 0 sqlite> pragma index_xinfo(sqlite_autoindex_foo_1); seqno cid name desc coll key ---------- ---------- ---------- ---------- ---------- ---------- 0 0 x 0 BINARY 1 1 -1 0 BINARY 0 sqlite> pragma index_xinfo(sqlite_autoindex_foo_2); seqno cid name desc coll key ---------- ---------- ---------- ---------- ---------- ---------- 0 1 y 0 BINARY 1 1 -1 0 BINARY 0