こんにちは、Noyです。
掲題のエラーで少しだけハマったので備忘録として残します。
エラー内容
SSMSで2つのテーブルのリレーションシップを作成しようとすると、以下エラーが発生。
テーブル 'Account (user)' は正常に保存されました
テーブル 'Like (post)'
- リレーションシップ 'FK_Like_Info' を作成できません。
ALTER TABLE ステートメントは FOREIGN KEY 制約 "FK_Like_Info" と競合しています。競合が発生したのは、データベース "YumeSetori"、テーブル "user.Account", column 'user_id' です。
外部キーって1つのテーブルに複数設定するとおかしくなるっけ?いやでもそんなことないよな…とか色々考えたり調べてもすぐに分からず。ただ、よくよく外部キーの格納データを見てみるとおかしいことに気づきました。
原因と解決策
主キーテーブルに存在しないidを、外部キーテーブルに設定していたからでした。
今回の場合、「Account(主キーテーブル)のuser_idに存在しないid」を「Like(外部キーテーブル)のlike_user_id」に設定していました。
これでは外部キーとしての整合性が取れていないためエラーとなっていました。
主キーテーブルに存在するidだけを外部キーテーブルのidに設定してあげるとエラーが出ずにリレーションシップを作成できました。
(エラー内容からは分かりにくいよなあ…と若干思いつつも)めでたしめでたし。
コメント