SQL Server INSERT ステートメントの失敗: NULL
Null 非許容列 'id' の値
SQL ステートメント:
<code class="language-sql">INSERT INTO role (name, created) VALUES ('Content Coordinator', GETDATE()), ('Content Viewer', GETDATE())</code>
エラーが発生します:
<code>Msg 515, Level 16, State 2, Line 1 Cannot insert the value NULL into column 'id', table 'CMT_DEV.dbo.role'; column does not allow nulls. INSERT fails. The statement has been terminated.</code>
このエラーは、id
列が NOT NULL
として定義されているにもかかわらず、INSERT
ステートメントでその値が指定されていないために発生します。 列に値が指定されていない場合、SQL Server はデフォルトで NULL
を設定し、制約違反が発生します。
これを修正する方法は次のとおりです:
明示的に id
を設定: id
ステートメントの INSERT
列に値を指定します。 これは、次に利用可能な ID を決定する方法がある場合にのみ実用的です (ID を手動で管理している場合など)。
自動インクリメント列を使用する: 最良の解決策は、id
列を自動インクリメント列にすることです。 これにより、新しい行ごとに一意の ID が自動的に生成されます。 SQL Server Management Studio (SSMS) の場合:
id
列を選択します。Is Identity
を Yes
に、Identity Increment
を 1
に設定します。 (必要に応じて Identity Increment
を調整できます。)自動インクリメントを実装した後は、INSERT
値を指定しなくても、id
ステートメントは正しく機能します。 データベースは ID の生成を自動的に処理します。
以上がSQL Server の INSERT ステートメントが「列 'id' に NULL を挿入できません」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。