Personテーブルの主キーはおそらくIDです。これは自動インクリメントの整数フィールドです。
IDではなくint型のアドレステーブルで外部キーを作成する必要があります。 Personレコードに対応する整数を保持しますが、外部キーを自動インクリメントする必要はありません。子テーブル(アドレス)のレコードごとに、外部キーに特定の値を設定して、それが属する親レコード(Person)を示します。
例:
INSERT person (firstname, lastname) VALUES ('John', 'Smith')
これにより、新しい個人レコードとフィールドpersonid
が挿入されます IDENTITYフィールドであるため、自動的に入力されます。
John Smithからのアドレスを挿入するには、彼のpersonid
を知っている必要があります。 。例:
-- Say, for example, personid of John Smith is 55
INSERT address (personid, street, city) VALUES (55, 'High Street', 'London')
したがって、person
テーブルpersonidは自動的に生成されますが、address
既存の人と一致する値を指定するテーブル。それが外部キーの要点です。
スキーマに関する詳細情報がなければ、問題を推測するのは困難です。