有没有一种方法可以按顺序对sqlite PRAGMA foreign_key_list()查询的结果进行排序,出现查询的表中的列会出现?

时间:2019-01-07 08:09:26

标签: c# sqlite indexing pragma

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

PRAGMA foreign_key_list(myTable)

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

编辑:使用.db3文件。

1 个答案:

答案 0 :(得分:1)

在进行有限测试的情况下,如果在列级别定义了外键,则 id 列对于较早定义的外键来说是一个较高的值。

您可以使用pragma's在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。

运行上面的结果始终是:-

enter image description here