Il s'agit d'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 109, Level 15, State 1, Line 1 There are more 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 plus 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 valeurs de VALUES
clause.
Vous obtiendrez une erreur similaire (mais techniquement différente) si vous essayez de faire le contraire - spécifiez moins colonnes dans INSERT
déclaration que vous essayez d'insérer.
Exemple
Voici un exemple pour illustrer.
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob');
Résultat :
Msg 109, Level 15, State 1, Line 1 There are more 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 deux colonnes (FirstName
, LastName
), mais je ne spécifie qu'une seule valeur à insérer (Bob
).
Comment corriger l'erreur
Je peux résoudre ce problème en supprimant l'une des colonnes ou en ajoutant une deuxième valeur à insérer.
Donc je pourrais faire ceci :
INSERT INTO Customers (FirstName)
VALUES ('Bob');
Ou ceci :
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Bien que, en utilisant ces exemples, 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).