如何在SQLite中获取有关外键的信息?

时间:2018-01-29 18:56:28

标签: android sql sqlite

sqlite_master表似乎缺少信息。如何获得有关我的表的一些额外信息,如约束信息等。 任何例子?或者是否有一些我从未听说过的有用的图书馆?

2 个答案:

答案 0 :(得分:2)

使用

CREATE TABLE Courses (cNo VARCHAR(10), cTitle VARCHAR(30),
    creditHours VARCHAR(2), deptName VARCHAR(30), PRIMARY KEY (cNo),
    INDEX (cNo),
    FOREIGN KEY (cNo)
        REFERENCES Transcripts(cNo)
    );

返回表的外键。

然后,您可以使用

PRAGMA foreign_key_list(table);

列出违规行为,而不是自己动手。

答案 1 :(得分:0)

sqlite_master sql 列包含用于创建表格的 SQL ,因此包含外键信息。

SELECT tbl_name,sql FROM sqlite_master WHERE sql LIKE('%REFERENCES%')

将为具有外键的表定位行。

  • REFERENCES,而不是FOREIGN,将包括在列级别定义的FOREIGN KEY(作为列约束),它只使用外键子句,因此不会包括FOREIGN KEY

但是,PRAGMA foreign_key_list(????),其中????是要检查的表的名称,以更实用的格式提供信息(如下例所示)。

e.g。从 sqlite_master 中提取可能会导致(添加换行符): -

CREATE TABLE Match(id_Match INTEGER PRIMARY KEY AUTOINCREMENT, 
    id_Court INTEGER REFERENCES Court(id_Court), 
    id_Player INTEGER REFERENCES Player(id_Player), 
    id_Player1 INTEGER REFERENCES Player(id_Player))

虽然使用PRAGMA foreign_key_list(Match)会导致: -

enter image description here