sql >> Databáze >  >> RDS >> Sqlserver

Chyba serveru SQL 110:V příkazu INSERT je méně sloupců než hodnot zadaných v klauzuli VALUES.

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


  1. Jak vypustit sloupec s omezením?

  2. Podmíněné pořadí T-SQL podle

  3. Nelze najít vstupní bod s názvem „InterlockedIncrement“ v knihovně DLL „kernel32.dll“ – [chráněno e-mailem] 64 bit

  4. Pronikání hlouběji do migrace Django