0

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)

テーブル「トラック」のリストを取得できるようにしたいのですが、テーブルのアーティスト列のアーティスト ID に戻る外部キーがありますか?

これを行うための API が表示されませんか? 集計のために、データベースを開くときにプログラムでこれを行う必要があります。

ありがとう。

PRAGMAforeign_key_list(Valuation); を使用した後。

私は戻りました:

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

縦棒で分割する必要があることは理解していますが、最初の 2 つの列は何ですか? 0|0 ?

4

1 に答える 1

1

(外部) キーは複数の列で構成される可能性があるため、これを列情報として返すことは意味がないことに注意してください。

テーブルの外部キーに関する情報を取得するには、次を使用します。

PRAGMA foreign_key_list(テーブル名);

このプラグマは、テーブル「テーブル名」の CREATE TABLE ステートメントの REFERENCES 句によって作成された各外部キー制約に対して 1 行を返します。

于 2013-08-01T08:06:13.997 に答える