需要在 SQL Server 2012 中自动递增字符串

Anb*_*n G 1 sql sql-server sql-server-2012

考虑 SQL Server 2012 中的表

789-0000000
Run Code Online (Sandbox Code Playgroud)

上述数字将被视为 SQL Server 2012 中的字符串,但每当我更新记录时,我都需要增加到 1。

例如:

  • 当我更新记录 1 时,它应该增加到 789-0000001
  • 当我更新记录 2 时,它应该增加到 789-0000002

最后增量应该只789-做0000000

mar*_*c_s 5

最好的解决方案是使用

  • ID INT IDENTITY(1,1)列让 SQL Server 处理数值的自动递增
  • 一个计算的、持久的列,用于将该数值转换为您需要的值

所以试试这个:

CREATE TABLE dbo.YourTable
  (ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
   CompanyID AS '789-' + RIGHT('000000' + CAST(ID AS VARCHAR(7)), 7) PERSISTED,
   .... your other columns here....
  )
Run Code Online (Sandbox Code Playgroud)

现在,每次插入一行dbo.YourTable而不为IDor指定值时CompanyID

INSERT INTO dbo.YourTable(Col1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)
Run Code Online (Sandbox Code Playgroud)

那么 SQL Server 将自动且安全地增加您的ID值,CompanyID并将包含诸如789-0000001789-0000002、......等值- 自动、安全、可靠、无重复。