sql >> Database >  >> RDS >> Sqlserver

Hoe voeg ik een primaire sleutel voor autoincrement toe aan de sql-server met nvarchar?

Je kunt dit niet rechtstreeks doen - wat je kunt doe is dit:

  • maak een kolom voor automatisch ophogen om het numerieke gedeelte te verwerken
  • voeg een berekende kolom toe dat het tekenreeksvoorvoegsel en het nummer samenvoegt

Dus probeer zoiets als dit:

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
    )

Als u nu rijen als volgt invoegt:

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

je zou de volgende rijen moeten krijgen:

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

En u kunt uw primaire sleutel definiëren op die IDandPrefix kolom ook:

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


  1. Fatale fout:Maximale uitvoeringstijd van 30 seconden overschreden in C:

  2. Mysql:het toevoegen van een externe sleutel geeft geen waarschuwing/fout op MyISAM-tabellen

  3. Begin met een hoofdletter van meerdere woorden van een kolom zonder CAP_FIRST

  4. Oracle-planner-taak maken