自定义函数做标识列的例子,不自动重排编号,而是自动补号
2010-07-22 01:21
316 查看
--自已做标识列的例子,不自动重排编号,而是自动补号:
--创建得到最大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
本文来自CSDN博客,转载请标明出处: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
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2009/07/22/4369943.aspx
相关文章推荐
- 自定义函数做标识列的例子,不自动重排编号,而是自动补号
- 自定义函数做标识列的例子,不自动重排编号,而是自动补号(zt)
- 自定义函数做标识列的例子,不自动重排编号,而是自动补号
- 自已做标识列的例子 不自动重排编号 而是自动补号
- 自已做标识列的例子,不自动重排编号,而是自动补号
- 我常用的自定义函数之clean php自动过滤功能
- python 例子: 实现动态加载类,并自动执行它定义的函数
- MongoDB自动增长id实现、自定义函数调用、与Spring集成
- Oracle利用Sequence和触发器Trigger实现Columns的Default自动编号(标识)
- sql server 按照日期自动生成单据编号的函数
- 【Vegas原创】按自定义格式进行编号的SQL自定义函数
- javascript 一个自定义长度的文本自动换行的函数
- 自定义std::set比较函数的例子
- dojo小例子(15)给dojo on的事件处理函数传递自定义参数的两种方法
- 如何在NCL(The NCAR Command Language )启动时自动加载自定义的函数和程序
- 自定义数据库自动编号初始值和步进值
- 一个自定义函数的 例子 知道圆面积 求周长
- 返回日期自动编号函数
- vuejs中,如何使一个自定义函数在vue渲染完之后再自动执行
- 活生生的例子:qInstallMessageHandler接受指定类型的函数指针,这样就可以随心所欲的让程序员自定义函数名以及函数位置