自定义函数做标识列的例子,不自动重排编号,而是自动补号(zt)
2010-11-04 11:27
405 查看
(注:此文章转自:http://blog.csdn.net/htl258/archive/2009/07/22/4369943.aspx)
--自已做标识列的例子,不自动重排编号,而是自动补号:
--创建得到最大id的函数
IF NOT OBJECT_ID('[f_getid]') IS NULL
DROP function f_getid
GO
create function f_getid()
returns int
as
begin
declare @id int
if not exists(select 1 from tb where id=1)
set @id=1
else
begin
select @id=max(id) from tb
if @id is null
set @id=1
else
begin
declare @id1 int
select @id1=min(id) from tb a where id<>@id and not exists(select 1 from tb where id=a.id+1)
if @id1 is not null set @id=@id1
set @id=@id+1
end
end
lb_re:
return @id
end
go
--创建表
IF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE tb
GO
create table tb(id int primary key default dbo.f_getid(),name varchar(10))
go
--插入记录测试
insert into tb(name) values('张三')
insert into tb(name) values('张四')
insert into tb(name) values('张五')
insert into tb(name) values('张六')
insert into tb(name) values('张七')
insert into tb(name) values('张八')
insert into tb(name) values('张九')
insert into tb(name) values('张十')
--显示插入的结果
select * from tb
/*
id name
----------- ----------
1 张三
2 张四
3 张五
4 张六
5 张七
6 张八
7 张九
8 张十
(8 行受影响)
*/
--删除部分记录
delete from tb where name in('张三','张七','张八','张十')
--显示删除后的结果
select * from tb
/*
id name
----------- ----------
2 张四
3 张五
4 张六
7 张九
(4 行受影响)
*/
--再次插入记录
insert into tb(name) values('李一')
insert into tb(name) values('李二')
--显示插入的结果
select * from tb order by id
/*
id name
----------- ----------
1 李一
2 张四
3 张五
4 张六
5 李二
7 张九
(6 行受影响)
*/
--删除环境
drop table tb
drop function f_getid
--自已做标识列的例子,不自动重排编号,而是自动补号:
--创建得到最大id的函数
IF NOT OBJECT_ID('[f_getid]') IS NULL
DROP function f_getid
GO
create function f_getid()
returns int
as
begin
declare @id int
if not exists(select 1 from tb where id=1)
set @id=1
else
begin
select @id=max(id) from tb
if @id is null
set @id=1
else
begin
declare @id1 int
select @id1=min(id) from tb a where id<>@id and not exists(select 1 from tb where id=a.id+1)
if @id1 is not null set @id=@id1
set @id=@id+1
end
end
lb_re:
return @id
end
go
--创建表
IF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE tb
GO
create table tb(id int primary key default dbo.f_getid(),name varchar(10))
go
--插入记录测试
insert into tb(name) values('张三')
insert into tb(name) values('张四')
insert into tb(name) values('张五')
insert into tb(name) values('张六')
insert into tb(name) values('张七')
insert into tb(name) values('张八')
insert into tb(name) values('张九')
insert into tb(name) values('张十')
--显示插入的结果
select * from tb
/*
id name
----------- ----------
1 张三
2 张四
3 张五
4 张六
5 张七
6 张八
7 张九
8 张十
(8 行受影响)
*/
--删除部分记录
delete from tb where name in('张三','张七','张八','张十')
--显示删除后的结果
select * from tb
/*
id name
----------- ----------
2 张四
3 张五
4 张六
7 张九
(4 行受影响)
*/
--再次插入记录
insert into tb(name) values('李一')
insert into tb(name) values('李二')
--显示插入的结果
select * from tb order by id
/*
id name
----------- ----------
1 李一
2 张四
3 张五
4 张六
5 李二
7 张九
(6 行受影响)
*/
--删除环境
drop table tb
drop function f_getid
相关文章推荐
- 自定义函数做标识列的例子,不自动重排编号,而是自动补号
- 自定义函数做标识列的例子,不自动重排编号,而是自动补号
- 自定义函数做标识列的例子,不自动重排编号,而是自动补号
- 自已做标识列的例子,不自动重排编号,而是自动补号
- 自已做标识列的例子 不自动重排编号 而是自动补号
- javascript实现的一个自定义长度的文本自动换行的函数。
- [VBA]用一个简单例子说明如何在Excel中自定义函数
- PostgreSQL自定义函数返回单条记录类型的例子...
- 一个自定义函数的 例子 知道圆面积 求周长
- 自定义数据库自动编号初始值和步进值
- php中自定义自动加载函数
- 一个自定义函数的例子
- 自已做标识列的例子--流水号:日期+当日编号
- 返回日期自动编号函数
- 活生生的例子:qInstallMessageHandler接受指定类型的函数指针,这样就可以随心所欲的让程序员自定义函数名以及函数位置
- Mysql 自定义函数简单例子
- 自定义函数中返回表的例子
- vuejs -- 如何使一个自定义函数在加载时自动执行
- Access中的“自动编号”怎么才能不从1开始并且自定义格式
- 自已做标识列的例子_流水号日期+当日编号