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''?
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):
id
. 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!