有没有办法在SQL Server中自动生成特定长度的列?
例如,我希望特定的列默认值为12位唯一编号。
答案 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)