1

私はソーシャルネットワーキングサイトを作成していて、友達のテーブルに取り組んでいますが、何が間違っているのかわかりません。

users(userId, name - userId は主キー) と (friend1, friend2, status) という別のテーブルがありますfriendsfriend1および更新および削除時friend2の外部キーはuserId、カスケード テーブル ユーザーに設定され、ID として 134 のエントリがあり、3 に変更したいと考えています。friends テーブルには、値が 143 の行が 2 つあります。134 を 3 に変更すると、更新時にカスケードし、フレンド テーブルの値も変更されるべきではありません。このエラーが発生しています

1451 - 親行を削除または更新できません: 外部キー制約が失敗しました ( modionz1_nightspot/friends, CONSTRAINT friends_ibfk_1FOREIGN KEY ( friend1) REFERENCES users( userId))

ちなみに、両方のテーブルはinnodbです。これらの概念に関するヘルプは大歓迎です。

4

1 に答える 1

1

In the first place cascade update is a very bad idea on any database that expects to have more than a couple of hundred records. If you use it and you have thousands or millions of child records then you can lock up the entire system for hours. Avoid cascade update. The correct process is to add the parent record you want. Then update the child records to reflect that value instead of the intial one and then delte the old parent record. Hoever it is best to design where you don't ever need to update the PK which is one reason why many people use surrogate keys.

于 2010-08-31T18:47:24.927 に答える