在我的SQL Server数据库中,我将此作为我的ID
,例如SSK0000001
。
我希望它在我的系统中自动递增,并且ID
的最后一个数字,例如“1”(在另一个新记录之后它将成为SSK0000002
)在我的SQL Server数据库中更新。
我知道可以通过在数据库中设置自动增量来完成,但现在我的ID
是nchar
。
任何人都可以提供帮助。
答案 0 :(得分: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
答案 1 :(得分: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 ), ... )
但这是最强肮脏的解决方案,因为你可以采取:
我建议您转到自动增量数据类型
答案 2 :(得分:0)
我想到的第一个解决方案是
展开您的ID,以便将SSK与数字
增加数字
然后用数字
答案 3 :(得分:0)
我建议阅读这个相关的问题
Create custom "auto-increment" Compound Primary Key?
另一个想法是使用此解决方案撰写密钥
Set a custom identity value on a auto increment field
来自微软博客的建议
http://forums.asp.net/t/1410179.aspx/1
但我最喜欢的答案是不是最佳做法:
创建表以存储当前序列值 创建一个函数来获取和增加当前值 创建存储过程以修改当前序列值 创建触发器
这是MYSQL中的一个想法 http://en.latindevelopers.com/ivancp/2012/custom-auto-increment-values/
我希望有用