これは、SQLServerでデータをテーブルに挿入するときによく発生するエラーです。完全なエラーは次のようになります:
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.
これは、INSERT
でさらに列を指定した場合に発生します VALUES
で挿入しようとしている値の数よりもステートメント 句。
これは、VALUES
から誤って1つ以上の値を省略した場合に発生します。 条項。
反対のことを行おうとすると、同様の(ただし技術的には異なる)エラーが発生します。少ないを指定してください。 INSERT
の列 挿入しようとするよりもステートメント。
例
実例を示します。
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob');
結果:
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.
この場合、2つの列(FirstName
)を指定します 、LastName
)、ただし、挿入する値を1つだけ指定します(Bob
。
エラーを修正する方法
これを修正するには、列の1つを削除するか、挿入する2番目の値を追加します。
だから私はこれを行うことができました:
INSERT INTO Customers (FirstName)
VALUES ('Bob');
またはこれ:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
ただし、これらの例を使用すると、 LastName 列にNOT NULL
があります 制約、最初の例はその制約に違反します(NULL
を挿入しようとしているため) 姓に 実際にNOT NULL
がある場合の列 その列の制約)。