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