sql >> Base de Datos >  >> RDS >> Sqlserver

Error 110 de SQL Server:Hay menos columnas en la instrucción INSERT que los valores especificados en la cláusula VALUES.

El mensaje de error 110 es un error común en SQL Server al insertar datos en una tabla. El error completo se ve así:

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.

Esto sucede cuando especifica menos columnas en el INSERT declaración que la cantidad de valores que intenta insertar con VALUES cláusula.

Esto ocurrirá si accidentalmente omite una o más columnas del INSERT declaración.

Obtendría un error similar (pero técnicamente diferente) si intentara hacer lo contrario:especifique más columnas en el INSERT declaración de lo que intenta insertar.

Ejemplo

Aquí hay un ejemplo para demostrarlo.

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.

En este caso, especifico una columna para insertar datos (FirstName ), pero luego especifico dos valores para insertar (Bob y Brown ).

Cómo corregir el error

Puede corregir este error asegurándose de que la cantidad de columnas coincida con la cantidad de valores que se insertarán.

En mi ejemplo, podría eliminar uno de los valores que se insertarán o agregar una segunda columna para atender el segundo valor.

Así que podría hacer esto:

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

O esto:

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

Vale la pena mencionar que si el LastName la columna tiene un NOT NULL restricción, el primer ejemplo violará esa restricción (porque estaría intentando insertar NULL en el Apellido columna cuando en realidad hay un NOT NULL restricción en esa columna).

Si solo hay dos columnas en la tabla, también podría hacer esto:

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

Aunque normalmente es mejor indicar explícitamente los nombres de las columnas si es posible (como en el ejemplo anterior).