Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Erreur SQL Server 110 :il y a moins de colonnes dans l'instruction INSERT que de valeurs spécifiées dans la clause VALUES.

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