Le message d'erreur 110 est une erreur couramment rencontrée dans SQL Server lors de l'insertion de données dans une table. L'erreur complète ressemble à ceci :
Msg 110, Level 15, State 1, Line 1 There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
Cela se produit lorsque vous spécifiez moins de colonnes dans le INSERT
instruction que le nombre de valeurs que vous essayez d'insérer avec le VALUES
clause.
Cela se produira si vous omettez accidentellement une ou plusieurs colonnes de INSERT
déclaration.
Vous obtiendrez une erreur similaire (mais techniquement différente) si vous essayez de faire le contraire - spécifiez plus colonnes dans INSERT
déclaration que vous essayez d'insérer.
Exemple
Voici un exemple pour illustrer.
INSERT INTO Customers (FirstName)
VALUES ('Bob', 'Brown');
Résultat :
Msg 110, Level 15, State 1, Line 1 There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
Dans ce cas, je spécifie une colonne dans laquelle insérer des données (FirstName
), mais je spécifie ensuite deux valeurs à insérer (Bob
et Brown
).
Comment corriger l'erreur
Vous pouvez corriger cette erreur en vous assurant que le nombre de colonnes correspond au nombre de valeurs à insérer.
Dans mon exemple, je pourrais soit supprimer l'une des valeurs à insérer, soit ajouter une deuxième colonne pour répondre à la deuxième valeur.
Donc je pourrais faire ceci :
INSERT INTO Customers (FirstName)
VALUES ('Bob');
Ou ceci :
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Il convient de mentionner que si le LastName la colonne a un NOT NULL
contrainte, le premier exemple violera cette contrainte (parce que j'essaierais d'insérer NULL
dans le LastName colonne lorsqu'il y a en fait un NOT NULL
contrainte sur cette colonne).
S'il n'y a que deux colonnes dans le tableau, je pourrais aussi faire ceci :
INSERT INTO Customers
VALUES ('Bob', 'Brown');
Bien qu'il soit généralement préférable d'indiquer explicitement les noms de colonne si possible (comme dans l'exemple précédent).