sql server取一随机数

cyc123007512 2009-07-21 02:40:35
一张表中有一个字段,要求范围是7000--7500,如果想每次插入的时候递增,比如从7001,7002...7009这样子,但是删除了一个之后,比如删除了7006,就不要递增到7010,而是继续插入7006.这个怎么实现,能直接查出来么
...全文
168 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyc123007512 2009-07-21
  • 打赏
  • 举报
回复
可以了,谢谢小梁
-狙击手- 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 feixianxxx 的回复:]
顶小梁的
[/Quote]顶
feixianxxx 2009-07-21
  • 打赏
  • 举报
回复
顶小梁的
sdhdy 2009-07-21
  • 打赏
  • 举报
回复
楼上说的很明白了。
liangCK 2009-07-21
  • 打赏
  • 举报
回复
--自已做标识列的例子:

--创建得到最大id的函数
create function f_getid()
returns int
as
begin
return(select isnull(max(id),0)+1 from tb)
end
go

--创建表
create table tb(id int default dbo.f_getid() primary key,name varchar(10))
go

--创建触发器,在删除表中的记录时,自动更新记录的id(**如果不要此功能,则删除此触发器)
create trigger t_delete on tb
AFTER delete
as
declare @id int,@mid int
select @mid=min(id),@id=@mid-1 from deleted
update tb set id=@id,@id=@id+1 where id>@mid
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

--删除部分记录
delete from tb where name in('张五','张七','张八','张十')

--显示删除后的结果
select * from tb

--删除环境
drop table tb
drop function f_getid

/*--测试结果
id name
----------- ----------
1 张三
2 张四
3 张五
4 张六
5 张七
6 张八
7 张九
8 张十

(所影响的行数为 8 行)

id name
----------- ----------
1 张三
2 张四
3 张六
4 张九

(所影响的行数为 4 行)
--*/
cyc123007512 2009-07-21
  • 打赏
  • 举报
回复
不懂哦,麻烦说详细点
[Quote=引用 1 楼 happyflystone 的回复:]
写个函数,缺少绑定到这个列,
[/Quote]
feixianxxx 2009-07-21
  • 打赏
  • 举报
回复
--如果你是自增列的话
set identity_insert 表名 on
insert 表名
values(7006)
set identity_insert 表名 off
-狙击手- 2009-07-21
  • 打赏
  • 举报
回复
写个函数,缺少绑定到这个列,

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧