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

Chyba serveru SQL 109:V příkazu INSERT je více sloupců než hodnot zadaných v klauzuli VALUES

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


  1. Podpora více jazyků v 11i/R12

  2. Pořízení výpisu tabulek v oracle 10g pomocí procedury PL/SQL

  3. Zjednodušte vnořený příkaz case when

  4. Jak funguje Tan() v PostgreSQL