テーブルuser
があり、userID
が主キーです。 Friends
という別のテーブルがあります。 Friends
テーブルには、UserID
とFrndID
の列で表される友達として2人のユーザーがいます。UserID
とFrndID
は両方ともテーブルuserID
のuser
。
データの整合性を確保したい。このようなものを使用できますか?
ADD CONSTRAINT `ufd_users_fk` FOREIGN KEY (`userId`, `friendId`)
REFERENCES `users` (`userId`, `userId`) ON DELETE CASCADE ON UPDATE CASCADE;
知りたいのはREFERENCES
users(
ユーザーID,
ユーザーID)
列を正しく複数回参照していますか? 2つの個別の制約を作成しない理由は、両方のユーザーがテーブルuser
に存在する必要があるためです。
いいえ、2つの外部キーを作成する必要があります。
ADD CONSTRAINT `ufd_users_fk` FOREIGN KEY (`userId`)
REFERENCES `users` (`userId`)
ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `ufd_users_fk` FOREIGN KEY (`friendId`)
REFERENCES `users` (`userId`)
ON DELETE CASCADE ON UPDATE CASCADE;