sqlite C api如何弄清楚哪些表有外键?

时间:2013-07-31 20:11:59

标签: sqlite

使用C API,我没有看到确定命名表的外键约束的方法吗?

给出这个例子:

CREATE TABLE artist(
  artistid    INTEGER PRIMARY KEY, 
  artistname  TEXT
);
CREATE TABLE track(
  trackid     INTEGER,
  trackname   TEXT, 
  trackartist INTEGER,
  FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);

sqlite3_table_column_metadata()会告诉你它是主键,自动增量等等但是如何 获取外键约束?

 FOREIGN KEY(trackartist) REFERENCES artist(artistid)

我希望能够获取表格“track”的列表,其中有外键返回表格艺术家列artistid?

我没有看到api这样做?出于聚合的目的,我需要在打开数据库时以编程方式执行此操作。

感谢。

使用PRAGMA foreign_key_list(估价);

我回来了:

PRAGMA foreign_key_list(Valuation);
0|0|Stock|StockId|Id|NO ACTION|NO ACTION|NONE

我知道我需要拆分垂直条,但前两列是什么? 0 | 0?

1 个答案:

答案 0 :(得分:1)

请注意,(外国)密钥可以包含多个列,因此将其作为列信息返回是没有意义的。

要获取有关表的外键的信息,请使用:

  

PRAGMA foreign_key_list(table-name);

     

此pragma为表“table-name”的CREATE TABLE语句中的REFERENCES子句创建的每个foreign key constraint返回一行。