Chybová zpráva 110 je běžná chyba na serveru SQL Server při vkládání dat do tabulky. Úplná chyba vypadá takto:
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.
K tomu dojde, když v INSERT
zadáte méně sloupců než počet hodnot, které se pokoušíte vložit pomocí VALUES
doložka.
K tomu dojde, pokud omylem vynecháte jeden nebo více sloupců z INSERT
prohlášení.
Pokud byste se pokusili udělat opak, dostali byste podobnou (ale technicky odlišnou) chybu – zadejte více sloupců v INSERT
než se pokusíte vložit.
Příklad
Zde je příklad k demonstraci.
INSERT INTO Customers (FirstName)
VALUES ('Bob', 'Brown');
Výsledek:
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.
V tomto případě určím jeden sloupec, do kterého se mají vložit data (FirstName
), ale poté určím dvě hodnoty, které se mají vložit (Bob
a Brown
).
Jak opravit chybu
Tuto chybu můžete opravit tak, že se ujistíte, že počet sloupců odpovídá počtu hodnot, které mají být vloženy.
V mém příkladu bych mohl buď odstranit jednu z hodnot, které mají být vloženy, nebo přidat druhý sloupec pro druhou hodnotu.
Takže bych mohl udělat toto:
INSERT INTO Customers (FirstName)
VALUES ('Bob');
Nebo toto:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Za zmínku stojí, že 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).
Pokud jsou v tabulce pouze dva sloupce, mohl bych také udělat toto:
INSERT INTO Customers
VALUES ('Bob', 'Brown');
Ačkoli je obvykle lepší explicitně uvést názvy sloupců, pokud je to možné (jako v předchozím příkladu).