0

私は2つのテーブルを持っています:

  • table1もっているstaffid
  • table2もっているstaffid

staffidtable2を table1 と等しくしたいstaffid

テーブル 1 のスタッフ ID が変更された場合、テーブル 2 のスタッフ ID を変更する必要があります。

どうすればいいですか?

4

3 に答える 3

1

最初の要件は、table2 のスタッフ ID が table1 のスタッフ ID と等しくなければならないことであるため、table2 のスタッフ ID に対する外部キー制約を次のように定義できます。

ALTER TABLE table2 WITH NOCHECK
ADD CONSTRAINT FK_staffid
FOREIGN KEY(staffid)
REFERENCES table1(staffid)
ON UPDATE CASCADE

外部キー オプション 'With check' は、外部キー テーブル [つまり Table2 ] 内の既存のデータが制約に準拠するために検証される必要があることを指定しますが、'WITH NOCHECK' 設定は、既存のデータが新しい制約に準拠するために検証されないことを指定します。オプションを使用すると、Table2 内のすべての既存データが既に制約に準拠していることがわかっている場合、作成プロセスがより効率的になりますが、準拠していないレコードは作成中に無視されます。ただし、その後の不適合行への更新中に、制約が適用され、エラーが発生します。

また、2 番目の要件は、table1 の staffid に加えられた変更を table2 の staffid にカスケードする必要があることです。'ON UPDATE CASCADE' オプションを使用する必要があります。

于 2013-09-30T05:23:18.300 に答える