Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Errore 109 di SQL Server:nell'istruzione INSERT sono presenti più colonne rispetto ai valori specificati nella clausola VALUES

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