sqlite_master表似乎缺少信息。如何获得有关我的表的一些额外信息,如约束信息等。 任何例子?或者是否有一些我从未听说过的有用的图书馆?
答案 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)
会导致: -