SQL Server中的自动生成列

时间:2011-03-10 06:50:22

标签: sql-server-2005

有没有办法在SQL Server中自动生成特定长度的列?

例如,我希望特定的列默认值为12位唯一编号。

2 个答案:

答案 0 :(得分:1)

您可以使用BIGINT IDENTITY列生成唯一的BIGINT值 - 但默认情况下它们不是12位数。

当然,基于BIGINT IDENTITY,您可以创建如下所示的计算列:

 ALTER TABLE dbo.YourTable
    ADD AutoField AS 'XY' + RIGHT('0000000000' + CAST(ID AS VARCHAR(10)), 10) PERSISTED

这样,您将在ID(作为标识值)以及计算出的AutoField列中的XY0000000001,XY0000000002等中获得1,2,3,4的值。

这几乎是我所知道的唯一“自动”代(除了GUID之外 - 但这些代码超过12个字符而不是数字)。

你想在这做什么?

答案 1 :(得分:1)

您可以使用种子值bigint

100000000000标识
create table T (id bigint identity(100000000000, 1), Col1 varchar(50))

并使用检查约束来阻止你走远。

alter table T with check add constraint CK_T_ID check (id<1000000000000)