ホームページ > データベース > mysql チュートリアル > SQL Server の INSERT ステートメントが「列 'id' に NULL を挿入できません」というメッセージで失敗するのはなぜですか?

SQL Server の INSERT ステートメントが「列 'id' に NULL を挿入できません」というメッセージで失敗するのはなぜですか?

Barbara Streisand
リリース: 2025-01-24 11:22:10
オリジナル
663 人が閲覧しました

Why Does My SQL Server INSERT Statement Fail with

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) の場合:

    1. テーブルをデザイン モードで開きます。
    2. id 列を選択します。
    3. 列のプロパティで、「ID の仕様」を見つけます。
    4. Is IdentityYes に、Identity Increment1 に設定します。 (必要に応じて Identity Increment を調整できます。)

自動インクリメントを実装した後は、INSERT 値を指定しなくても、id ステートメントは正しく機能します。 データベースは ID の生成を自動的に処理します。

以上がSQL Server の INSERT ステートメントが「列 'id' に NULL を挿入できません」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート