Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie füge ich einen Autoincrement-Primärschlüssel in SQL Server mit nvarchar hinzu?

Sie können dies nicht direkt tun - was Sie können tun ist dies:

  • Erstellen Sie eine Auto-Increment-Spalte, um den numerischen Teil zu verarbeiten
  • fügen Sie eine berechnete Spalte hinzu die das String-Präfix und die Zahl verkettet

Versuchen Sie es also so:

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
    )

Wenn Sie jetzt Zeilen wie diese einfügen:

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

Sie sollten Zeilen wie diese erhalten:

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

Und Sie können Ihren Primärschlüssel auf diesem IDandPrefix definieren Spalte auch:

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