10 个解决方案
#1
在学习中遇到这个问题
数据库里有编号字段
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 行)
*/
#2
create table tb
(id int identity,
name varchar(10),
code as name+CONVERT(CHAR(10),GETDATE(),120)+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
#3
--(4)生成流水号
if object_id('tb') is not null drop table tb
drop function dbo.FC_Next
create function dbo.FC_Next()
returns char(8)
as
begin
return (select 'BH'+right(1000001+isnull(right(max(BH),6),0),6) from tb)
end
create table tb
(
BH char(8) primary key default dbo.FC_Next(),
col int
)
select * from tb
begin tran
insert into tb (col) values (1)
insert into tb (col) values (2)
insert into tb(BH,col) values (dbo.FC_Next(),14)
commit tran
select * from tb
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2009/02/10/3872714.aspx
#4
create table tb
(id int identity,
name varchar(10),
code as name+REPLACE(CONVERT(CHAR(10),GETDATE(),120),'-','')+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 A2010090900001
2 B B2010090900002
3 C C2010090900003
4 D D2010090900004
#5
if object_id('tb') is not null drop table tb
drop function dbo.FC_Next
create function dbo.FC_Next()
returns char(8)
as
begin
return (select 'BH'+right(1000001+isnull(right(max(BH),6),0),6) from tb)
end
create table tb
(
BH char(8) primary key default dbo.FC_Next(),
col int
)
select * from tb
begin tran
insert into tb (col) values (1)
insert into tb (col) values (2)
insert into tb(BH,col) values (dbo.FC_Next(),14)
commit tran
select * from tb
#6
首先谢谢各位老师,我把表名和相关列名都说出来了,那位老师能帮我把代码写出来,谢谢
表名:出货
相关列:编号,代码规格,日期
表名:出货
相关列:编号,代码规格,日期
#7
小弟希望编号能自动生成,且在进行添加记录、修改日期或规格代码、删除记录时能自动维护
添加记录的流水号处理的规则楼上的几个都说了。
修改日期或规格代码也要改编号,这个可能要用到触发器。修改记录就触发把日期或规格代码的值更新到编号
删除记录自动维护是什么意思?把后面的流水号往前移?这个应该没必要,而且会影响数据库的性能的。
添加记录的流水号处理的规则楼上的几个都说了。
修改日期或规格代码也要改编号,这个可能要用到触发器。修改记录就触发把日期或规格代码的值更新到编号
删除记录自动维护是什么意思?把后面的流水号往前移?这个应该没必要,而且会影响数据库的性能的。
#8
这就不对了吧,大家都的饭都作好了,就等你吃,你还想让大家喂。。。
自己要多写才能有所提高 。。不然很难提高 的
#9
create table 出货
(id int identity,
代码规格 varchar(10),
日期 datetime,
编号 as 代码规格+REPLACE(CONVERT(CHAR(10),日期,120),'-','')+right('0000'+cast(id as varchar),5))
go
insert 出货(代码规格,日期) select 'A','2010-09-02 14:20:30'
union all select 'B','2010-09-05 14:20:30'
union all select 'C','2010-09-06 14:20:30'
union all select 'D','2010-09-07 14:20:30'
select * from 出货
drop table 出货
#10
在C#代码中怎么自定义规则,让一个string类型的字符串自增长,也就是自动编号功能!???
先获取字段中最大的数,然后自动加1,这个在C#中怎么实现呢???
先获取字段中最大的数,然后自动加1,这个在C#中怎么实现呢???
#1
在学习中遇到这个问题
数据库里有编号字段
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 行)
*/
#2
create table tb
(id int identity,
name varchar(10),
code as name+CONVERT(CHAR(10),GETDATE(),120)+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
#3
--(4)生成流水号
if object_id('tb') is not null drop table tb
drop function dbo.FC_Next
create function dbo.FC_Next()
returns char(8)
as
begin
return (select 'BH'+right(1000001+isnull(right(max(BH),6),0),6) from tb)
end
create table tb
(
BH char(8) primary key default dbo.FC_Next(),
col int
)
select * from tb
begin tran
insert into tb (col) values (1)
insert into tb (col) values (2)
insert into tb(BH,col) values (dbo.FC_Next(),14)
commit tran
select * from tb
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2009/02/10/3872714.aspx
#4
create table tb
(id int identity,
name varchar(10),
code as name+REPLACE(CONVERT(CHAR(10),GETDATE(),120),'-','')+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 A2010090900001
2 B B2010090900002
3 C C2010090900003
4 D D2010090900004
#5
if object_id('tb') is not null drop table tb
drop function dbo.FC_Next
create function dbo.FC_Next()
returns char(8)
as
begin
return (select 'BH'+right(1000001+isnull(right(max(BH),6),0),6) from tb)
end
create table tb
(
BH char(8) primary key default dbo.FC_Next(),
col int
)
select * from tb
begin tran
insert into tb (col) values (1)
insert into tb (col) values (2)
insert into tb(BH,col) values (dbo.FC_Next(),14)
commit tran
select * from tb
#6
首先谢谢各位老师,我把表名和相关列名都说出来了,那位老师能帮我把代码写出来,谢谢
表名:出货
相关列:编号,代码规格,日期
表名:出货
相关列:编号,代码规格,日期
#7
小弟希望编号能自动生成,且在进行添加记录、修改日期或规格代码、删除记录时能自动维护
添加记录的流水号处理的规则楼上的几个都说了。
修改日期或规格代码也要改编号,这个可能要用到触发器。修改记录就触发把日期或规格代码的值更新到编号
删除记录自动维护是什么意思?把后面的流水号往前移?这个应该没必要,而且会影响数据库的性能的。
添加记录的流水号处理的规则楼上的几个都说了。
修改日期或规格代码也要改编号,这个可能要用到触发器。修改记录就触发把日期或规格代码的值更新到编号
删除记录自动维护是什么意思?把后面的流水号往前移?这个应该没必要,而且会影响数据库的性能的。
#8
这就不对了吧,大家都的饭都作好了,就等你吃,你还想让大家喂。。。
自己要多写才能有所提高 。。不然很难提高 的
#9
create table 出货
(id int identity,
代码规格 varchar(10),
日期 datetime,
编号 as 代码规格+REPLACE(CONVERT(CHAR(10),日期,120),'-','')+right('0000'+cast(id as varchar),5))
go
insert 出货(代码规格,日期) select 'A','2010-09-02 14:20:30'
union all select 'B','2010-09-05 14:20:30'
union all select 'C','2010-09-06 14:20:30'
union all select 'D','2010-09-07 14:20:30'
select * from 出货
drop table 出货
#10
在C#代码中怎么自定义规则,让一个string类型的字符串自增长,也就是自动编号功能!???
先获取字段中最大的数,然后自动加1,这个在C#中怎么实现呢???
先获取字段中最大的数,然后自动加1,这个在C#中怎么实现呢???