web-dev-qa-db-ja.com

列名または指定された値の数がテーブル定義エラーと一致しません

テーブルがあり、そのテーブルの2つの列に2つの外部キーが定義されています。問題は、SQL Serverから値を挿入すると、次のエラーが発生することです。

列名または指定された値の数がテーブル定義と一致しません

テーブルの定義については、下の画像を参照してください。値が挿入されない理由を教えてください。

Table Image

5
codeOholic

あなたは私たちが何をしているのかを示していません-しかし、テーブル構造に基づいて、これはあなたがすべきことです

  • explicitlyが挿入する列をリストするINSERTステートメントを作成します-IDIDENTITY不要な列/挿入できない列

  • これらの列に入力する値の正確な数を定義する

したがって、INSERTステートメントは次のようになります。

INSERT INTO dbo.tbl_Post (cat_id, ngo_id, title, description, active)
VALUES (42, 4711, 'Some title', 'Some description', 1)

avoidingの習慣で間違いなく得るべきことは、INSERT INTO dbo.tblPostなし挿入する列のリストを明示的に定義しません。これは単なる災害のレシピであり、テーブル定義を変更するとすぐに、既存のINSERTsはすべて、テーブル定義と一致しなくなるため機能しなくなります。

したがって、alwaysは、INSERTステートメントがデータを入力する列のリストを明示的に定義します!

また、このトピックに関するAaron Bertrandの優れたブログ投稿も参照してください。
キックする悪い習慣:SELECT *を使用する/列リストを省略する

9
marc_s