テーブルがあり、そのテーブルの2つの列に2つの外部キーが定義されています。問題は、SQL Serverから値を挿入すると、次のエラーが発生することです。
列名または指定された値の数がテーブル定義と一致しません
テーブルの定義については、下の画像を参照してください。値が挿入されない理由を教えてください。
あなたは私たちが何をしているのかを示していません-しかし、テーブル構造に基づいて、これはあなたがすべきことです:
explicitlyが挿入する列をリストするINSERT
ステートメントを作成します-ID
がIDENTITY
不要な列/挿入できない列
これらの列に入力する値の正確な数を定義する
したがって、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
なし挿入する列のリストを明示的に定義しません。これは単なる災害のレシピであり、テーブル定義を変更するとすぐに、既存のINSERT
sはすべて、テーブル定義と一致しなくなるため機能しなくなります。
したがって、alwaysは、INSERT
ステートメントがデータを入力する列のリストを明示的に定義します!
また、このトピックに関するAaron Bertrandの優れたブログ投稿も参照してください。
キックする悪い習慣:SELECT *を使用する/列リストを省略する