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

Errore 110 di SQL Server:nell'istruzione INSERT sono presenti meno colonne rispetto ai valori specificati nella clausola VALUES.

Il messaggio di errore 110 è un errore comunemente riscontrato in SQL Server durante l'inserimento di dati in una tabella. L'errore completo è simile al seguente:

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.

Ciò accade quando specifichi meno colonne in INSERT istruzione rispetto al numero di valori che stai cercando di inserire con VALUES clausola.

Ciò si verifica se ometti accidentalmente una o più colonne da INSERT dichiarazione.

Otterresti un errore simile (ma tecnicamente diverso) se provassi a fare il contrario:specifica altro colonne nel INSERT dichiarazione di quella che si tenta di inserire.

Esempio

Ecco un esempio da dimostrare.

INSERT INTO Customers (FirstName) 
VALUES ('Bob', 'Brown');

Risultato:

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.

In questo caso, specifico una colonna in cui inserire i dati (FirstName ), ma poi specifico due valori da inserire (Bob e Brown ).

Come correggere l'errore

Puoi correggere questo errore assicurandoti che il numero di colonne corrisponda al numero di valori da inserire.

Nel mio esempio, potrei rimuovere uno dei valori da inserire o aggiungere una seconda colonna per soddisfare il secondo valore.

Quindi potrei fare questo:

INSERT INTO Customers (FirstName) 
VALUES ('Bob');

O questo:

INSERT INTO Customers (FirstName, LastName) 
VALUES ('Bob', 'Brown');

Vale la pena ricordare che 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 c'è effettivamente un NOT NULL vincolo su quella colonna).

Se ci sono solo due colonne nella tabella, potrei anche fare questo:

INSERT INTO Customers
VALUES ('Bob', 'Brown');

Anche se di solito è meglio indicare esplicitamente i nomi delle colonne, se possibile (come nell'esempio precedente).