Erreur « Impossible d'insérer NULL dans la colonne 'id' » de SQL Server : un guide complet
L'insertion de données dans une base de données SQL Server nécessite de fournir des valeurs pour toutes les colonnes, notamment la clé primaire. Si une colonne est désignée comme NOT NULL
et n'a pas de valeur par défaut, tenter d'insérer un NULL
déclenchera une erreur.
Scénario : Insertion dans une table de rôles
Considérez cette instruction SQL :
<code class="language-sql">INSERT INTO role (name, created) VALUES ('Content Coordinator', GETDATE()), ('Content Viewer', GETDATE())</code>
Cela tente d'ajouter deux lignes à la table role
(contenant les colonnes name
et created
– cette dernière avec un horodatage par défaut). La colonne de clé primaire, id
, est omise.
Répartition des erreurs
SQL Server exige des valeurs de clé primaire explicites ou une génération automatique. Puisque id
n'est pas spécifié et n'a pas de valeur par défaut, SQL Server l'attribue NULL
. Cependant, id
est défini comme NOT NULL
, empêchant l'insertion de NULL
. Le message d'erreur résultant est :
<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>
Solution : incrémentation automatique à la rescousse
La solution est de s'assurer que id
reçoive toujours une valeur valide. La méthode la plus courante consiste à utiliser l'incrémentation automatique :
Utilisation de SQL Server Management Studio (SSMS) :
role
en mode Conception.id
et accédez à ses propriétés de colonne.Cela configure id
pour qu'il incrémente automatiquement chaque nouvelle ligne, éliminant ainsi la spécification manuelle de la clé primaire.
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!