Insérer des données dans des tables liées avec de clé étrangère
Tout d'abord, j'ai essayé ce Insérer des Données Dans les Tables Liées par des Clés Étrangères et n'ai pas la réponse.
J'ai 3 tables:
Table: Clients
ID -------LastName-------FirstName-------PhoneNumber
Table: Ordre
ID-------Status-------CustomerID
Table: OrderLine
ID-------OrderID-------Product-------Quantity-------PricePerUnit
Je exécutez la requête suivante
SqlCommand myCommand2 =
new SqlCommand(@"INSERT INTO Order (Status, CustomerID)
VALUES(13016, SELECT ID FROM Customers WHERE FirstName = 'Garderp')",
myConnection);`
et il jette exception
Erreur de syntaxe près de Commande
Comment puis-je ajouter des données dans la table avec la clé étrangère SQL Server 2008 en particulier dans ce cas particulier?
- Pour info, vous ne peut accepter qu'une réponse 🙂 je pense que Icare est la plus complète.
- Ok, tnx pour l'info 🙂
Vous devez vous connecter pour publier un commentaire.
Il devrait être:
ORDER
est un mot réservé en SQL Server (utilisé dans leORDER BY
opération).Vous avez besoin pour délimiter que le nom entre crochets:
"INSERT INTO [Order] (Status, CustomerID) VALUES "
Qui sera la cause de SQL Server de le traiter comme un nom d'objet au lieu de le lire en tant que mot clé.
Ordre est le mot clé SQL, vous devez le support de tous les mots clés si vous l'utilisez comme nom de table ou de colonne.
Essayez d'utiliser cette requête
essayer cette
si il y a plus d'un client avec le nom "Gardep", cette requête échoue. Vous devez sélectionner un seul enregistrement . À l'aide de HAUT sera la meilleure idée ici
TOP 1
se défausse d'autres résultats qu'il veut.SELECT 13016, id from customers
, qui est une autre raison de ce qui est une mauvaise réponse - l'approche est inappropriée à la question. Balises de Code ne sont pas près d'alimentation à la cuillère, ils sont à rendre le code plus lisible.