Sql Server实现自动增长
--下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号。--得到新编号的函数
CREATE FUNCTION f_NextBH()
RETURNS
char(8)
AS
BEGIN
RETURN(SELECT
'BH'+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK))
END
GO
--在表中应用函数
CREATE TABLE tb(
BH
char(8) PRIMARY KEY DEFAULT dbo.f_NextBH(),
col
int)
--插入资料
BEGIN TRAN
INSERT tb(col) VALUES(
1) INSERT tb(col) VALUES(
2) INSERT tb(col) VALUES(
3) DELETE tb WHERE col
=3 INSERT tb(col) VALUES(
4) INSERT tb(BH,col) VALUES(dbo.f_NextBH(),
14)
COMMIT TRAN
--显示结果
SELECT
* FROM tb
/*--结果
BH col
---------------- -----------
BH0000011
BH0000022
BH0000034
BH00000414
--
*/
create table tb
(id
int>
name varchar(10),
code
as 'BH'+right('0000'+cast(id as varchar),5))
go
insert tb(name)
select 'A'
union all
select 'B'
union all
select 'C'
union all
select 'D'
select * from tb
drop table tb
/*
id name code
----------- ---------- ------------
1 A BH00001
2 B BH00002
3 C BH00003
4 D BH00004
页:
[1]