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