Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да добавя първичен ключ за автоматично нарастване в sql сървър с nvarchar?

Не можете да направите това директно - това, което можете направете това:

  • създайте колона с автоматично нарастване, за да обработвате числовата част
  • добавете изчислена колона който свързва префикса на низа и числото

Така че опитайте нещо подобно:

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
    )

Сега, когато вмъкнете редове по този начин:

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

трябва да получите редове като този:

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

И можете да дефинирате своя първичен ключ на този IDandPrefix колона също:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на изглед чрез съхранена процедура

  2. каква е разликата между клъстерен индекс и уникален индекс?

  3. Как да внедрите регистриране и докладване на грешки в SQL съхранени процедури?

  4. Схема на SQL сървър и схема по подразбиране

  5. Обобщете списъка в низ, разделен със запетая