Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 SQL Server中的自动生成列_Sql Server 2005 - Fatal编程技术网

Sql server 2005 SQL Server中的自动生成列

Sql server 2005 SQL Server中的自动生成列,sql-server-2005,Sql Server 2005,有没有办法在SQL Server中自动生成特定长度的列 例如,我希望特定列的默认值为12位唯一数字。您可以有一个BIGINT IDENTITY列,该列将生成唯一的BIGINT值,但默认情况下它们不是12位数字 当然,基于BIGINT标识,您可以创建一个计算列,如下所示: ALTER TABLE dbo.YourTable ADD AutoField AS 'XY' + RIGHT('0000000000' + CAST(ID AS VARCHAR(10)), 10) PERSISTED

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


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

您可以有一个
BIGINT IDENTITY
列,该列将生成唯一的BIGINT值,但默认情况下它们不是12位数字

当然,基于
BIGINT标识
,您可以创建一个计算列,如下所示:

 ALTER TABLE dbo.YourTable
    ADD AutoField AS 'XY' + RIGHT('0000000000' + CAST(ID AS VARCHAR(10)), 10) PERSISTED
这样,您将在
ID
中自动获得1、2、3、4的值(作为标识值),并在计算的
自动字段中自动获得XY0000000001、XY0000000002等值

这几乎是我所知道的唯一的“自动”生成(除了GUID,但它们的长度超过12个字符,而不是数字)


你想在这里做什么?

你可以使用带有种子值的
bigint
标识
10000000000

create table T (id bigint identity(100000000000, 1), Col1 varchar(50))
并使用检查约束来防止您走得太远

alter table T with check add constraint CK_T_ID check (id<1000000000000)
使用检查更改表T添加约束检查ID检查(ID