私はこの問題を数時間抱えています。 SQL Server
、私はこのクエリを実行しました:
INSERT INTO USERS_AVATAR(userId, avatId) VALUES ('1', '213');
INSERT INTO USERS_AVATAR(userId, avatId) VALUES ('2', '312');
しかし、メッセージは言って現れます:
メッセージ547、レベル16、状態0、行1
INSERTステートメントがFOREIGN KEY制約「FKUSERS_AVAT731248」と競合しました。データベース "gk314"、テーブル "gk314.USERS"、列 'userId'で競合が発生しました。メッセージ547、レベル16、状態0、行2
INSERTステートメントがFOREIGN KEY制約「FKUSERS_AVAT731248」と競合しました。データベース "gk314"、テーブル "gk314.USERS"、列 'userId'で競合が発生しました。
助けてください!
UserIdsを挿入する前に1
および2
からUSERS_AVATAR
、最初にそれらをテーブルUSERS
に挿入する必要があります。これが、FOREIGN KEY制約で必要なものです。
外部キー制約は、SQLの「このテーブルはデータが他のテーブルに存在することを期待する」という言い方です。これにより、データが2回存在したり、同期を維持したりすることなく、他のテーブルを参照できます。
この場合、ユーザーデータのテーブル(USERS
)とアバターデータのテーブル(AVATARS
)があり、USERS_AVATAR
テーブルはこの2つをリンクしています。ユーザーをusersテーブルに追加し、アバターをアバターテーブルに追加する必要があります。その後、2つをリンクできます。次のようになります。
INSERT INTO USERS (userId, email, password, status) VALUES (1, '[email protected]',' gk314', 'strong')
INSERT INTO AVATARS (avatId, name, ...) VALUES (1, 'Avatar1', ...)
INSERT INTO USERS_AVATAR (userId, avatId) VALUES (1, 1)
元の回答:
これは、gk314.USERS
に追加しようとしているuserId
と一致するuserId
がないUSERS_AVATAR
というテーブルがあることを意味します。 USERS
テーブルを確認し、userId
1および2を使用してユーザーを追加すると、USERS_AVATAR
テーブルに追加できるようになります。