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
Libérer: 2025-01-24 11:22:10
original
772 Les gens l'ont consulté

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:

INSERT INTO role (name, created) VALUES ('Content Coordinator', GETDATE()), ('Content Viewer', GETDATE())
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal