字符串类型字段自动增长办法
2009-03-26 22:11
295 查看
在学习中遇到这个问题
数据库里有编号字段
BH00001
BH00002
BH00003
BH00004
如何实现自动增长
--下面的代码生成长度为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
---------------- -----------
BH000001 1
BH000002 2
BH000003 4
BH000004 14
--*/
create table tb
(id int identity,
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
(所影响的行数为 4 行)
*/
数据库里有编号字段
BH00001
BH00002
BH00003
BH00004
如何实现自动增长
--下面的代码生成长度为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
---------------- -----------
BH000001 1
BH000002 2
BH000003 4
BH000004 14
--*/
create table tb
(id int identity,
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
(所影响的行数为 4 行)
*/
相关文章推荐
- 数据库建模时设置表的列的字段为自动增长类型
- springmvc/springboot处理前台字符串日期自动转换成后台date类型的三种办法
- 在plsql中,总是遇到在clob类型字段上存储数据出错--字符串太长,现在有一个比较简单的解决办法
- 如何实现字符串类型的ID自动增长
- 数据库中自动增长的字段类型
- 获取表结构信息(字段名,类型,长度,精度,小数位数,主键,自动增长)
- oracle数据库建表、修改字段名称类型、增加字段、ID自动增长写法
- springmvc/springboot处理前台字符串日期自动转换成后台date类型的三种办法
- mysql字段是自动增长类型结果却不是连续的
- SQL 2000创建表的时候设置某一字段为自动增长的类型
- hibernate自动建表设定字段类型为数据库中为timestamp类型
- Kotlin基本类型自动装箱出现问题解决办法
- Guid算法与标识列(自动增长字段)在表中的应用
- [sqlserver]在text类型字段中查找字符串出现次数
- spring boot或springmvc返回时把date类型的字段转成字符串
- SQL Server自动增长字段的使用
- mysql删除数据表内容后id 自动递增字段不是从1开始的解决办法
- 自动创建临时表,并给临时表添加一个自动增长的行号字段
- Insert 一个字段类型是自动增量的,又要写入变量
- sqlserver字段相同情况下另一字段实现自动增长