Toto je běžná chyba na serveru SQL Server při vkládání dat do tabulky. Úplná chyba vypadá takto:
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.
To se stane, když zadáte více sloupců v INSERT
než počet hodnot, které se pokoušíte vložit pomocí VALUES
doložka.
K tomu dojde, pokud omylem vynecháte jednu nebo více hodnot z VALUES
doložka.
Pokud byste se pokusili udělat opak, dostali byste podobnou (ale technicky odlišnou) chybu – zadejte méně sloupců v INSERT
než se pokusíte vložit.
Příklad
Zde je příklad k demonstraci.
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob');
Výsledek:
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.
V tomto případě specifikuji dva sloupce (FirstName
, LastName
), ale specifikuji pouze jednu hodnotu, která se má vložit (Bob
).
Jak opravit chybu
Mohu to opravit buď odstraněním jednoho ze sloupců, nebo přidáním druhé hodnoty, která se má vložit.
Takže bych mohl udělat toto:
INSERT INTO Customers (FirstName)
VALUES ('Bob');
Nebo toto:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Ačkoli pomocí těchto příkladů, pokud Příjmení sloupec má NOT NULL
omezení, první příklad toto omezení poruší (protože bych se pokoušel vložit NULL
do Příjmení sloupec, když ve skutečnosti existuje NOT NULL
omezení na tento sloupec).