Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como adiciono uma chave primária de incremento automático no servidor sql com nvarchar?


Você não pode fazer isso diretamente - o que você pode fazer é isso:
  • crie uma coluna de incremento automático para lidar com a parte numérica
  • adicione uma coluna calculada que concatena o prefixo da string e o número

Então tente algo assim:
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
    )

Agora, quando você insere linhas assim:
INSERT INTO dbo.YourTable(StringPrefix) VALUES('A'), ('B'), ('A')

você deve obter linhas como esta:
ID   StringPrefix   IDandPrefix
 1        A             A1
 2        B             B2
 3        A             A3

E você pode definir sua chave primária nesse IDandPrefix coluna também:
ALTER TABLE dbo.YourTable 
ADD CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED (IDandPrefix)