Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Erro 110 do SQL Server:há menos colunas na instrução INSERT do que os valores especificados na cláusula VALUES.


A mensagem de erro 110 é um erro comumente encontrado no SQL Server ao inserir dados em uma tabela. O erro completo é assim:
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.

Isso acontece quando você especifica menos colunas no INSERT instrução do que o número de valores que você está tentando inserir com o VALUES cláusula.

Isso ocorrerá se você omitir acidentalmente uma ou mais colunas do INSERT demonstração.

Você receberia um erro semelhante (mas tecnicamente diferente) se tentasse fazer o oposto – especifique mais colunas no INSERT declaração do que você tenta inserir.

Exemplo


Aqui está um exemplo para demonstrar.
INSERT INTO Customers (FirstName) 
VALUES ('Bob', 'Brown');

Resultado:
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.

Nesse caso, especifico uma coluna para inserir dados (FirstName ), mas então especifico dois valores para inserir (Bob e Brown ).

Como corrigir o erro


Você pode corrigir esse erro certificando-se de que o número de colunas corresponda ao número de valores a serem inseridos.

No meu exemplo, eu poderia remover um dos valores a serem inseridos ou adicionar uma segunda coluna para atender ao segundo valor.

Então eu poderia fazer isso:
INSERT INTO Customers (FirstName) 
VALUES ('Bob');

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

Vale a pena mencionar que se o LastName coluna tem um NOT NULL restrição, o primeiro exemplo violará essa restrição (porque eu estaria tentando inserir NULL no Sobrenome coluna quando na verdade há um NOT NULL restrição nessa coluna).

Se houver apenas duas colunas na tabela, eu também poderia fazer isso:
INSERT INTO Customers
VALUES ('Bob', 'Brown');

Embora geralmente seja melhor declarar explicitamente os nomes das colunas, se possível (como no exemplo anterior).