如何在SQLServer中自动增加表中的列值而不使用标识和主键

时间:2016-04-27 10:46:28

标签: sql sql-server sql-server-2008

我有一个包含唯一ID列的表,其值类似于“SLN000001”,

每当添加新行时,我都需要增加列值,但该列没有标识,并且它不是主键。 我怎样才能使它发挥作用?

2 个答案:

答案 0 :(得分:5)

您可以使用计算列

CREATE TABLE #foo (
    IDColumn int  NOT NULL IDENTITY(1,1),
    PayLoad varchar(100) NOT NULL,
    TheRealKey AS CONCAT('SLN', RIGHT(CONCAT('00000', IDColumn), 6)) PERSISTED PRIMARY KEY
    )
GO
INSERT #foo (PayLoad) VALUES ('Row 1'), ('Row 2')
GO
SELECT * FROM #foo f

答案 1 :(得分:2)

使用计算列

declare @test table(id int identity (1,1), 
       unique_no AS concat('SLN', right('00000'+ltrim(id), 6)), name varchar(100))
insert into @test(name)
select 'name1' union all select 'name2' union all select 'name3'
select * from @test