Questo è un errore comunemente riscontrato in SQL Server durante l'inserimento di dati in una tabella. L'errore completo è questo:
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.
Ciò accade quando specifichi più colonne in INSERT
istruzione rispetto al numero di valori che stai cercando di inserire con VALUES
clausola.
Ciò si verificherà se ometti accidentalmente uno o più valori da VALUES
clausola.
Otterresti un errore simile (ma tecnicamente diverso) se provassi a fare il contrario:specifica meno colonne nel INSERT
dichiarazione di quella che si tenta di inserire.
Esempio
Ecco un esempio da dimostrare.
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob');
Risultato:
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.
In questo caso, specifico due colonne (FirstName
, LastName
), ma specifico un solo valore da inserire (Bob
).
Come correggere l'errore
Posso risolvere questo problema rimuovendo una delle colonne o aggiungendo un secondo valore da inserire.
Quindi potrei fare questo:
INSERT INTO Customers (FirstName)
VALUES ('Bob');
O questo:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Anche se, usando questi esempi, se il Cognome la colonna ha un NOT NULL
vincolo, il primo esempio violerà tale vincolo (perché proverei a inserire NULL
nel Cognome colonna quando in realtà è presente un NOT NULL
vincolo su quella colonna).