SQLite:如何使用正确的名称

时间:2016-04-27 18:07:12

标签: 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 |

我们可以看到index_list返回有关PK的信息,但报告的名称不正确(“sqlite_autoindex_t1_1”而不是“pk_t1”)。

与UNIQUE约束相同的问题。它们是使用自动生成的名称创建的。

是否可以提取真正的PRIMARY KEY / UNIQUE CONSTRAINT名称?

P.S。我可以看到JetBrains的DataGrip在数据库浏览器中正确显示PK名称。但是sqliteadmin例如用sqlite_autoindex_t1_1这样的名字显示它们。对于唯一约束,即使DataGrip也没有显示正确的名称(实际上它根本不显示它们)。

1 个答案:

答案 0 :(得分:0)

索引和约束是不同的对象。

SQLite没有机制来检索约束名称。你必须解析SQL。