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

Comment ajouter une clé primaire d'auto-incrémentation dans SQL Server avec nvarchar ?

Vous ne pouvez pas le faire directement - ce que vous pouvez faire est ceci :

  • créer une colonne auto-incrémentée pour gérer la partie numérique
  • ajouter une colonne calculée qui concatène le préfixe de chaîne et le nombre

Alors essayez quelque chose comme ça :

CREATE TABLE dbo.YourTable
    (ID INT IDENTITY(1,1) NOT NULL,
     StringPrefix NVARCHAR(10) NOT NULL,
     IDandPrefix AS ISNULL(StringPrefix + CAST(ID AS NVARCHAR(10)), 'X') PERSISTED
    )

Désormais, lorsque vous insérez des lignes comme celle-ci :

INSERT INTO dbo.YourTable(StringPrefix) VALUES('A'), ('B'), ('A')

vous devriez obtenir des lignes comme celle-ci :

ID   StringPrefix   IDandPrefix
 1        A             A1
 2        B             B2
 3        A             A3

Et vous pouvez définir votre clé primaire sur ce IDandPrefix colonne aussi :

ALTER TABLE dbo.YourTable 
ADD CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED (IDandPrefix)