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!
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.
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
.