給定一個SQLite數據庫。SQLite:如何使用正確名稱提取主鍵和唯一約束
與主鍵的表:
create table t1 (id int not null, CONSTRAINT pk_id PRIMARY KEY (id));
現在查詢信息吧:
PRAGMA TABLE_INFO(t1);
回報:
| cid | name | type | notnull | dflt_value | pk | | --- | ---- | ---- | ------- | -----------| -- | | 0 | id | int | 1 | <null> | 1 |
PRAGMA index_list(t1);
回報:
| seq | name | unique | origin | partial | | --- | ----------------------| ------ | ------ | ------- | | 0 | sqlite_autoindex_t1_1 | 1 | pk | 0 |
我們可以看到關於PK index_list
回報的信息,但其報告不正確的名稱(「sqlite_autoindex_t1_1」而不是「pk_t1」)。
與UNIQUE約束相同的問題。它們是使用自動生成的名稱創建的。
是否可以提取真正的PRIMARY KEY/UNIQUE CONSTRAINT名稱?
P.S.我可以看到JetBrains的DataGrip在數據庫瀏覽器中正確顯示PK名稱。但sqliteadmin例如顯示它們的名字,如sqlite_autoindex_t1_1。對於唯一的約束,即使DataGrip不顯示正確的名稱(實際上它根本不顯示它們)。