C# 是否可以查询表中引用了sqlite中其他表的所有列?
正如标题所说,如果我有一个表,创建如下:C# 是否可以查询表中引用了sqlite中其他表的所有列?,c#,sqlite,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 'O
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语句并查找引用
关键字(使用Regex),但我希望有一个更简单的解决方案
第二种方法是获取表中的所有列名,并查看它们是否在名称中包含“ID”。这在很大程度上是有效的,因为本例中的数据库都遵循这种命名约定,但是,如果一个表包含一个列,该列的名称包含“ID”,但不引用任何内容,该怎么办?因此,我需要一个普遍适用的解决方案 您可以使用pragma列出并获取关于表的外键约束的信息: 如果您只需要列的名称,而不关心其余信息(或希望在更大的查询中使用它们):
我想这个链接可以帮助您将这些内容翻译成sqlite?请查看pragma。@Shawn非常感谢您,这正是我要找的。如果你把它作为答案,我会记下来。
PRAGMA foreign_key_list(MyTable);
SELECT "from" FROM pragma_foreign_key_list('MyTable');