web-dev-qa-db-fra.com

L'instruction INSERT était en conflit avec la contrainte FOREIGN KEY. Le conflit est survenu dans la base de données

J'ai ce problème depuis quelques heures maintenant. Dans SQL Server, j'ai exécuté cette requête:

INSERT INTO USERS_AVATAR(userId, avatId) VALUES ('1', '213');
INSERT INTO USERS_AVATAR(userId, avatId) VALUES ('2', '312');

mais le message apparaît disant:

Msg 547, niveau 16, état 0, ligne 1
L'instruction INSERT était en conflit avec la contrainte FOREIGN KEY "FKUSERS_AVAT731248". Le conflit s'est produit dans la base de données "gk314", table "gk314.USERS", colonne "userId".

Msg 547, niveau 16, état 0, ligne 2
L'instruction INSERT était en conflit avec la contrainte FOREIGN KEY "FKUSERS_AVAT731248". Le conflit s'est produit dans la base de données "gk314", table "gk314.USERS", colonne "userId".

Aidez-moi, s'il vous plaît!

4
problems

Avant d'insérer userIds 1 et 2 dans USERS_AVATAR, vous devez d'abord les insérer dans la table USERS. C'est ce que la contrainte FOREIGN KEY exige.

12
Russ

Les contraintes de clé étrangère sont une manière de SQL de dire "cette table s'attend à ce que des données existent dans d'autres tables". Il vous permet de référencer d'autres tables sans que les données aient à exister deux fois ou à être synchronisées.

Dans ce cas, il existe une table pour les données utilisateur (USERS) et une table pour les données d'avatar (AVATARS), et la table USERS_AVATAR relie les deux. Vous devrez ajouter un utilisateur à la table des utilisateurs, puis un avatar à la table des avatars, pour pouvoir lier les deux. Cela ressemblera à ceci:

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)

Réponse originale:

Cela signifie qu'il existe une table, gk314.USERS, qui n'a pas de userId qui correspond à la userId que vous essayez d'ajouter à USERS_AVATAR. Vérifiez la table USERS et ajoutez des utilisateurs avec userId 1 et 2, puis vous devriez pouvoir ajouter des éléments à la table USERS_AVATAR.

1
Adam V