就像标题所说的一样,如果我有一个表,则创建如下:
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
)
我正在寻找一个查询,该查询向我返回列名OtherTable1ID
和OtherTable2ID
。
我自己的方法是查询表的create语句并寻找REFERENCES
关键字(使用Regex),但是我希望有一个更简单的解决方案?
第二种方法是获取表中的所有列名称,并查看名称中是否包含“ ID”。这大多数情况下都有效,因为在这种情况下,数据库都遵循此命名约定,但是,如果表中包含名称为“ ID”但不引用任何内容的列,该怎么办?因此,我需要一个普遍适用的解决方案。
答案 0 :(得分:1)
您可以使用foreign_key_list杂注列出并获取有关表的外键约束的信息:
PRAGMA foreign_key_list(MyTable);
如果您只想要列的名称,而不关心其余信息(或想在更大的查询中使用它们):
SELECT "from" FROM pragma_foreign_key_list('MyTable');