INSERT【SQL】INSERTで「値の個数が不足しています」の対処法このページでは、ORACLEデータベースのSQLで、INSERT文を実行したときに「値の個数が不足しています」というエラーが出る原因と対処方法を紹介しております。INSERT文のサンプルは↓で多数紹介していますので参考にしてください。>>【SQL】INSERT文の書き方:サンプル多数あり「値の個数が不足しています」の原因と対処法INSERT文で「値の個数が不足しています」というエラーが出る原因を解説します。「値の個数が不足しています」の原因は、INTOで設定した列の数やデータ型とVALUESに設定した列の数やデータ型と一致していないからです。次のようなテーブルに、実際にレコードをINSERTして検証していきます。KEY(col1,col2));VALUESに指定した値の個数が不足しているパターン正しくINSERTされる実行例です。次のSQLでは、INTOにCOL1、COL2、COL3を指定し、VALUESでそれぞれ対応するデータ型で値を指定しました。問題なく登録されました。values('00001','0000000001',sysdate);1行が作成されました。続いて失敗する例です。INTOでカラムを3つ指定していますが、VALUESで指定した値が2つです。この場合、「値の個数が不足しています」というメッセージと共にSQLエラーとなります。*行1でエラーが発生しました。値の個数が不足しています。次はINSERTが成功する例です。先ほどINSERTに失敗したSQLのINTOの後ろの列名を3つから2つに書き換えると、INTOとVALUESの値の個数が一致するのでINSERTが成功します。INTOの後ろの列名で省略できるものは、主キーではない、もしくはNULLを許容する項目だけです。COL3は主キーでもなく、NULLを許容するので省略できます。values('00001','0000000003');1行が作成されました。INTOの後ろの列名を省略したときの起こるパターンまずはINSERTが失敗する例です。INTOの後ろの列名を全て省略した場合です。INTOの後ろの列名を省略する場合は、VALUESに全ての列の値が指定されている必要があります。次のSQLでは、VALUESにCOL3列に対応する値が指定されていないため、SQLエラーとなります。*行1でエラーが発生しました。値の個数が不足しています。次はINSERTが成功する例です。INTOの後ろの列名を全て省略するとき、VALUESに全ての列に対応する値を指定する必要があります。空でも良い文字はNULLを指定しておきます。次のSQLでは、先ほどのSQLに加え、VALUESにCOL3列に対応する値が指定されているのでINSERTが成功します。指定する値は対応するデータ型と同じであれば、NULL以外にも固定値や0などを指定することが出来ます。values('00001','0000000005',NULL);1行が作成されました。主キー項目の値の指定が不足しているパターンVALUESに主キー項目に対応する値の数が不足していると、次のように「・・・にはNULLは挿入できません。」とエラーになることがあります。VALUESに省略された項目にはデフォルトでNULLを設定しようとし、主キー項目なのでNULLは許容できないことでエラーで出ているようです。「値の個数が不足しています」というエラーではありませんが、VALUESの指定が間違っているので修正が必要です。values('00001')*行1でエラーが発生しました。("USER1"."TAB1"."COL2")にはNULLは挿入できません。まとめINSERT文を実行したときに「値の個数が不足しています」というエラーが出るパターンは次の3つです。・VALUESに指定した値の個数が不足しているパターン・INTOの後ろの列名を省略したときの起こるパターン・主キー項目の値の指定が不足しているパターンそれぞれ、列名とVALUESに指定する値のデータ型や個数を合わせるとINSERT文は成功します。この他にも、INSERT文の様々な書き方を解説しております。詳しくは「【SQL】INSERT文の書き方:サンプル多数あり」で解説しているのでぜひ参考にしてください。technology.。