为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕码人2483693 2022-07-10 16:34:17
如果 sqlite 表的行数超过设定的限制大小,我想以编程方式向它添加索引。我想将索引添加到所有具有外键的列中,为了获得这些,我使用PRAGMA foreign_key_list(myTable)我使用该from列从我的表中获取具有外键的列。由于具有多列的索引的顺序很重要,我想按照它们在表中出现的顺序对它们进行排序。有没有办法在这个PRAGMA查询中找到订单(以及如何),还是我必须进行另一个查询(PRAGMA table_info(myTable))并以编程方式找到订单?编辑:使用 .db3 文件。
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

通过进行有限的测试,如果外键是在列级别定义的,那么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 被添加。

结果,在运行上述内容时始终如一: -

//img1.sycdn.imooc.com//62ca8f290001538107320209.jpg

查看完整回答
反对 回复 2022-07-10
  • 1 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信