Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak dodać klucz podstawowy autoincrement w serwerze sql za pomocą nvarchar?

Nie możesz tego zrobić bezpośrednio — co możesz zrób to:

  • utwórz kolumnę z automatycznym przyrostem do obsługi części numerycznej
  • dodaj kolumnę obliczaną który łączy prefiks ciągu i liczbę

Spróbuj więc czegoś takiego:

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
    )

Teraz, gdy wstawiasz wiersze w ten sposób:

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

powinieneś otrzymać wiersze w ten sposób:

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

I możesz zdefiniować swój klucz podstawowy na tym IDandPrefix również kolumna:

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. Jak przyspieszyć DbSet.Add()?

  2. Jak zwrócić listę zdarzeń wyzwalających w SQL Server

  3. Samouczek dotyczący partycjonowania tabel SQL Server i partycji

  4. serwer sql Wstaw zbiorczo csv z danymi zawierającymi przecinek

  5. W jaki sposób warunki sanitarne, które unikają pojedynczych cudzysłowów, mogą zostać pokonane przez wstrzyknięcie SQL w SQL Server?