2016-09-15 1 views
1
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は、それらの列がどの列にあるかを示します。しかし、あなたが見ることができるように、暗黙のうちに(非ローインド)PRIMARY KEYUNIQUEによって作成されたインデックスの場合、この情報は存在しません。 autoindexはどのようなものかを私に伝える信頼できる方法はありますか?SQLite内部インデックスがどの列にあるかを知る方法はありますか?

答えて

1

内部インデックスと明示的に作成されたインデックスには違いはありません。

 
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 
:あなたは、同じプラグマ( index_listindex_infoindex_xinfo)とそれらについての情報を得ることができます
関連する問題