gpt4 book ai didi

c# - 有没有一种方法可以按查询所采用的表中的列的顺序来对 sqlite PRAGMAforeign_key_list() 查询的结果进行排序?

转载 作者:行者123 更新时间:2023-12-03 01:34:15 24 4
gpt4 key购买 nike

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

PRAGMA foreign_key_list(myTable)

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

编辑:使用 .db3 文件。

最佳答案

经过有限的测试,如果外键是在列级别定义的,那么 id 列对于早期定义的外键来说是一个更高的值。

您可以使用在 SELECT 语句中返回结果的编译指示,例如,并根据其中一列进行排序(如果使用了合适的列命名约定,则已使用 id,您可以根据来自 列(注意需要将其括起来))

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

关于c# - 有没有一种方法可以按查询所采用的表中的列的顺序来对 sqlite PRAGMAforeign_key_list() 查询的结果进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54070607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com