Maison >base de données >tutoriel mysql >Pourquoi l'instruction INSERT SQL Server échoue-t-elle avec 'Impossible d'insérer NULL dans la colonne 'ID''?

Pourquoi l'instruction INSERT SQL Server échoue-t-elle avec 'Impossible d'insérer NULL dans la colonne 'ID''?

Barbara Streisand
Barbara Streisandoriginal
2025-01-24 11:22:10669parcourir

Why Does My SQL Server INSERT Statement Fail with

SQL Server INSERT RECHERCHE ÉCONOMISATION: NULL Valeur dans la colonne non nullable 'Id'

L'instruction SQL:

<code class="language-sql">INSERT INTO role (name, created) VALUES ('Content Coordinator', GETDATE()), ('Content Viewer', GETDATE())</code>

entraîne l'erreur:

<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>

Cette erreur surgit parce que la colonne id est définie comme NOT NULL, mais l'instruction INSERT ne spécifie pas de valeur pour cela. SQL Server est par défaut NULL si une valeur n'est pas prévue pour une colonne, conduisant à la violation de la contrainte.

Voici comment réparer ceci:

  • Définissez explicitement id: Fournir une valeur pour la colonne id dans votre instruction INSERT. Ce n'est pratique que si vous avez un moyen de déterminer le prochain ID disponible (par exemple, vous gérez manuellement les ID).

  • Utilisez une colonne d'auto-incrémentation: La meilleure solution consiste à faire de la colonne id une colonne d'accrémentation automatique. Cela génère automatiquement des ID uniques pour chaque nouvelle ligne. Dans SQL Server Management Studio (SSMS):

    1. Ouvrez la table en mode conception.
    2. Sélectionnez la colonne id.
    3. Dans les propriétés de la colonne, recherchez "Spécification d'identité". "
    4. Set Is Identity pour Yes et Identity Increment à 1. (Vous pouvez ajuster Identity Increment si nécessaire.)

Après implémentation de l'incrément automatique, votre instruction INSERT fonctionnera correctement sans avoir besoin de spécifier la valeur id. La base de données gérera automatiquement la génération d'ID.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn