这样吧,再增加一个计算列,计算列从自增列映射过来
比如
create table #test1
(
Id int identity,
IdStr AS right('000'+CAST(Id AS varchar(50)),3) ,
a int
);
插入数据的时候只需要向a列插入数据就行了
insert into #test1(a) values(1);
insert into #test1(a) values(111);
结果中IdStr列就是从001开始自增,当然由于最多只截取3位字符串,所以当数值到达999以后就会从000开始循环递增了。
如果要产生 001 002 这样的 自增列, 可尝试使用 计算列的机制来处理.
CREATE TABLE test_create_tab2x (
id INT IDENTITY(1, 1) PRIMARY KEY,
code AS RIGHT(Cast((1000 + id) as varchar), 3),
val VARCHAR(10)
);
go
INSERT INTO test_create_tab2x(val) VALUES ('NO id');
INSERT INTO test_create_tab2x(val) VALUES ('NO id2');
go
SELECT code, val FROM test_create_tab2x;
go
code val
------ ----------
001 NO id
002 NO id2
(2 行受影响)
序列都是数字的,无法从001开始,只能从1开始,也可以从100开始,就是无法从001开始。
如果需要001,可以自己建立一个表,自己维护这个增长,一般生成字符串的序号,都是这样处理。
你建表的时候直接给加一个identity(001,1)不就可以了吗?
不过我想它可能不认识001,一般都是从1开始