Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come posso aggiungere una chiave primaria di incremento automatico nel server sql con nvarchar?

Non puoi farlo direttamente, cosa puoi fallo è questo:

  • crea una colonna di autoincremento per gestire la parte numerica
  • aggiungi una colonna calcolata che concatena il prefisso della stringa e il numero

Quindi prova qualcosa del genere:

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
    )

Ora quando inserisci righe come questa:

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

dovresti ottenere righe come questa:

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

E puoi definire la tua chiave primaria su quel IDandPrefix anche colonna:

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