是否可以查询表中所有引用sqlite中其他表的列?

时间:2018-12-17 13:42:42

标签: c# sqlite

就像标题所说的一样,如果我有一个表,则创建如下:

CREATE TABLE "MyTable" ( 
"ID" INTEGER PRIMARY KEY NOT NULL, 
"OtherTable1ID" INTEGER NOT NULL CONSTRAINT 'OtherTable1ID' REFERENCES 'OtherTable1' ('ID'), 
"OtherTable2ID" INTEGER NOT NULL CONSTRAINT 'OtherTable2ID' REFERENCES 'OtherTable2' ('ID'), 
"Repetition" INTEGER
)

我正在寻找一个查询,该查询向我返回列名OtherTable1IDOtherTable2ID

我自己的方法是查询表的create语句并寻找REFERENCES关键字(使用Regex),但是我希望有一个更简单的解决方案?

第二种方法是获取表中的所有列名称,并查看名称中是否包含“ ID”。这大多数情况下都有效,因为在这种情况下,数据库都遵循此命名约定,但是,如果表中包含名称为“ ID”但不引用任何内容的列,该怎么办?因此,我需要一个普遍适用的解决方案。

1 个答案:

答案 0 :(得分:1)

您可以使用foreign_key_list杂注列出并获取有关表的外键约束的信息:

PRAGMA foreign_key_list(MyTable);

如果您只想要列的名称,而不关心其余信息(或想在更大的查询中使用它们):

SELECT "from" FROM pragma_foreign_key_list('MyTable');