Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server, impossible d'insérer null dans le champ de clé primaire ?

Clés primaires dans tout les bases de données relationnelles ne sont pas autorisées à être NULL - c'est l'une des principales caractéristiques fondamentales d'une clé primaire.

Voir :SQL by Design :comment choisir la clé primaire

MISE À JOUR : ok, vous voulez donc une clé primaire "auto-incrémentée" dans SQL Server.

Vous devez le définir en tant que INT IDENTITY dans votre instruction CREATE TABLE :

 CREATE TABLE dbo.YourTable(ID INT IDENTITY, col1 INT, ..., colN INT)

puis lorsque vous faites un INSERT, vous devez spécifier explicitement les colonnes à insérer, mais ne spécifiez pas la colonne "ID" dans cette liste - alors SQL Server se chargera de trouver automatiquement la valeur appropriée :

 INSERT INTO dbo.YourTable(col1, col2, ..., colN) -- anything **except** `ID`      
 VALUES(va1l, val2, ..., valN)

Si vous souhaitez le faire après avoir déjà créé la table, vous pouvez le faire dans le concepteur de table de SQL Server Management Studio :