J'ai une table, avec deux clés étrangères définies sur deux colonnes de cette table. Le problème est que, lorsque j'insère les valeurs de SQL Server, j'obtiens l'erreur suivante:
Le nom de la colonne ou le nombre de valeurs fournies ne correspond pas à la définition de la table
Veuillez voir l'image ci-dessous pour la définition du tableau. Pouvez-vous me dire pourquoi la valeur n'est pas insérée?
Vous ne nous montrez pas ce que vous faites - mais basé sur la structure de la table, c'est ce que vous devriez faire:
créer une instruction INSERT
qui explicitement répertorie les colonnes dans lesquelles elle sera insérée - en supposant que ID
pourrait être un IDENTITY
colonne dans laquelle vous ne voulez pas/ne pouvez pas insérer
définir le nombre exact de valeurs à remplir dans ces colonnes
Donc, votre instruction INSERT
devrait ressembler à ceci:
INSERT INTO dbo.tbl_Post (cat_id, ngo_id, title, description, active)
VALUES (42, 4711, 'Some title', 'Some description', 1)
Ce que vous devez absolument avoir dans les habitudes d'éviter , c'est d'utiliser INSERT INTO dbo.tblPost
sans définissant explicitement la liste des colonnes à insérer. Ceci est juste une recette pour un désastre, dès que vous modifiez votre définition de table, tous vos INSERT
s existants se briseront car ils ne correspondent plus à la définition de la table.
Par conséquent: toujours définissez explicitement la liste des colonnes dans lesquelles une instruction INSERT
doit remplir les données!
Voir également l'excellent article de blog d'Aaron Bertrand sur le sujet:
Mauvaises habitudes à donner: utiliser SELECT */omettre la liste des colonnes