猿问

有没有办法按顺序对 sqlite PRAGMA foreign_key_list()

如果 sqlite 表的行数超过设定的限制大小,我想以编程方式向它添加索引。我想将索引添加到所有具有外键的列中,为了获得这些,我使用

PRAGMA foreign_key_list(myTable)

我使用该from列从我的表中获取具有外键的列。由于具有多列的索引的顺序很重要,我想按照它们在表中出现的顺序对它们进行排序。有没有办法在这个PRAGMA查询中找到订单(以及如何),还是我必须进行另一个查询(PRAGMA table_info(myTable))并以编程方式找到订单?

编辑:使用 .db3 文件。


慕码人2483693
浏览 112回答 1
1回答

qq_笑_17

通过进行有限的测试,如果外键是在列级别定义的,那么id列对于之前定义的外键来说是一个更高的值。您可以使用在 SELECT 语句中返回结果的编译指示,例如并根据其中一列进行排序(如果使用了合适的列命名约定,则使用了 id,您可以根据from列进行排序(注意它需要被括起来) ))SELECT * FROM pragma_foreign_key_list('mytable') ORDER BY id ASC;例如考虑以下内容:-DROP TABLE IF EXISTS mytable;CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY,  _otherd_building_id_reference INTEGER REFERENCES _building(_id),    _building_id_reference INTEGER REFERENCES _building(_id),    _room_id_reference INTEGER REFERENCES _room(_id),    _campus_id_reference INTEGER REFERENCES _campus(_id),    _othera_campus_reference INTEGER REFERENCES _campus(_id),    _otherz_room_id_reference INTEGER REFERENCES _room(_id),    _otherc_building_id_reference INTEGER REFERENCES _building(_id)    );SELECT * FROM pragma_foreign_key_list('mytable') ORDER BY id DESC;请注意,最初的列没有像* other? 这样的前缀?被添加,othera,c 和 z 被添加到最后,最后 _otherd_building_id_reference 被添加。结果,在运行上述内容时始终如一: -
随时随地看视频慕课网APP
我要回答