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