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

Error 109 de SQL Server:hay más columnas en la instrucción INSERT que los valores especificados en la cláusula VALUES

Este es un error común en SQL Server al insertar datos en una tabla. El error completo dice así:

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.

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

Esto ocurrirá si accidentalmente omite uno o más valores de VALUES cláusula.

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

Ejemplo

Aquí hay un ejemplo para demostrarlo.

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

Resultado:

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.

En este caso, especifico dos columnas (FirstName , LastName ), pero solo especifico un valor para insertar (Bob ).

Cómo corregir el error

Puedo arreglar esto eliminando una de las columnas o agregando un segundo valor para insertar.

Así que podría hacer esto:

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

O esto:

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

Aunque, usando estos ejemplos, 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).