0

在我的 SQL Server 数据库中,我得到了这个作为我ID的例子SSK0000001

我希望它在我的系统中自动递增,并且最后一个ID例如“1”的数字(在另一个新记录之后它将成为SSK0000002)在我的 SQL Server 数据库中更新。

我知道可以通过在数据库中设置自动增量来完成,但现在我ID的是nchar.

任何人都可以提供帮助将不胜感激。

4

3 回答 3

2

您可以使用基于自动增量列的计算列。应该从 sql server 2005 开始工作。

CREATE TABLE [dbo].[TEST1](
    [AUTO_ID] [int] IDENTITY(1,1) NOT NULL,
    [ID]  AS CAST(('SSK'+replace(str([AUTO_ID],(7),(0)),' ','0')) AS NCHAR(10)) PERSISTED,
    [NAME] [nvarchar](10) NULL

) ON [PRIMARY]

GO

INSERT INTO TEST1 (NAME) VALUES ('NAME1')
INSERT INTO TEST1 (NAME) VALUES ('NAME2')
INSERT INTO TEST1 (NAME) VALUES ('NAME3')

SELECT * FROM TEST1
于 2012-12-05T09:20:57.837 回答
1

您可以将右侧转换为 int 并递增:

declare @next int
select @next = convert( int, right( max( id ), 7 ) )  + 1
from your table 

然后插入为:

insert into ... (Id, ...)
values (   'SDK' + right( '0000000' + rtrim(ltrim( str( @next ) ) ), 7 ), ... )

但这是您可以采取的最肮脏的解决方案:

  • 这会导致很多数据库锁(因为聚合函数)
  • 比自动增量慢
  • 很多代码要保留。

我建议你改用自动增量数据类型

于 2012-12-05T08:54:59.573 回答
0

我想到的第一个解决方案是

  • 分解您的 ID,以便将 SSK 与号码分开

  • 增加数字

  • 然后用数字回溯 SSK

于 2012-12-05T08:54:05.407 回答