2

SQLを始めたばかりです。私は外部キーの考え方をよく理解していますが、それらを実装する方法の構文を学ぼうとしています.sqliteページを読むと、答えよりも多くの質問が得られます. 次の2行に違いはありますか?

CREATE TABLE child(x REFERENCES parent(id));
CREATE TABLE child(FOREIGN KEY x REFERENCES parent(id));

また、列は「table.column」の形式で指定されているとのことなので、上記の「parent.id」と入力したいのですが、読んだところすべて「parent(id)」と書かれているようです。この 2 つの違いは何ですか?

親キーが使用するものは何でも使用する必要があるため、外部キーに任意の種類のアフィニティ (用語を正しく使用していると思います) をバインドすることは想定されていませんか?

もっと質問がありますが、これは良いスタートです。助けてくれてありがとう!

4

1 に答える 1

2

違い:

CREATE TABLE child(x REFERENCES parent(id));

CREATE TABLE child(FOREIGN KEY x REFERENCES parent(id));

最初に、名前付きの 1 つの列xと外部キー制約を持つテーブルを作成します。2 つ目は、列を持たず、外部キー制約のみを持つテーブルを作成します。2 番目のステートメントは不明な列を参照しているため、失敗するはずxです。

複数の列で構成される場合は、外部キーを個別に宣言する必要があります。1 つの列に対して、

column1 references parent(column1)

正常に動作します。複数の列の場合、次のものが必要です。

column1, column2, foreign key (column1, column2) references parent(column1, column2)

table.columnこれは、フォーマットが十分でない理由も説明しています。複数の列を指定する方法は提供しません。

于 2013-09-14T17:05:43.620 に答える