sql >> Databasteknik >  >> RDS >> Sqlserver

Hur lägger jag till en primärnyckel för autoincrement i sql-server med nvarchar?

Du kan inte göra det här direkt - vad du kan gör är detta:

  • skapa en kolumn för automatisk ökning för att hantera den numeriska delen
  • lägg till en beräknad kolumn som sammanfogar strängprefixet och numret

Så prova något sånt här:

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
    )

Nu när du infogar rader så här:

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

du bör få rader så här:

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

Och du kan definiera din primära nyckel på det IDandPrefix kolumn också:

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


  1. Varför är låsning på bordsnivå bättre än låsning på radnivå för stora bord?

  2. SQL MERGE till fjärrservertabell (länkad).

  3. Skickar parametrar till en JDBC PreparedStatement

  4. Skulle det hjälpa att lägga till index till BIGINT-kolumnen i MySQL?