--建立测试环境
create table temp (id int identity(1,1),A varchar(10) default '')
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
create table #temp (id int)
--删除几条,产生不连续
delete from temp where id=6 or id=8 or id=13
--用游标
declare @p_id int,@e_id int
select @p_id=0,@e_id=0
declare id_cursor CURSOR
for
select id from tempopen id_cursor
fetch next from id_cursor into @p_id
while @@fetch_status=0
begin
fetch next from id_cursor into @e_id
if @e_id-@p_id>1 --判断连续
begin
insert into #temp values(@p_id)
end
set @p_id=@e_id
end
close id_cursor
deallocate id_cursor
--列结果
select id as '不连续开始ID号' from #tempdrop table #temp,temp
create table temp (id int identity(1,1),A varchar(10) default '')
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
insert temp values(default)
create table #temp (id int)
--删除几条,产生不连续
delete from temp where id=6 or id=8 or id=13
--用游标
declare @p_id int,@e_id int
select @p_id=0,@e_id=0
declare id_cursor CURSOR
for
select id from tempopen id_cursor
fetch next from id_cursor into @p_id
while @@fetch_status=0
begin
fetch next from id_cursor into @e_id
if @e_id-@p_id>1 --判断连续
begin
insert into #temp values(@p_id)
end
set @p_id=@e_id
end
close id_cursor
deallocate id_cursor
--列结果
select id as '不连续开始ID号' from #tempdrop table #temp,temp
解决方案 »
- update 后字段就变成科学计数法了求如何解决
- sqlserver自动增长型id
- 关于消除重复项的问题,
- 急求学生信息管理系统
- 安装 SQL Server 2005的一个错误
- 数据库有两表,T1(id int主键、 pid int)和T2(pid int主键、 text nvchar)T1 pid 与 T2主键一对多关联
- 急急急,用Oracle 写公交换乘的存储过程
- window服务开机不能自动连接数据库
- 简单的存储过程,帮帮忙
- 帮忙写个sql,在线等,马上给分---多谢!
- 可以给存贮过程传递这样一个参数吗? or src_id=+ ''' +cast('0189828' as nvarchar(30))+'''
- +++++++++这样的C/S多用户数据库系统能做得出来吗?++++++++
select pro_sec, pro_id, pro_name from product a
where not exists(select * from product where pro_sec=a.pro_sec-1)--第一个记录如果算是连续的记录
select pro_sec, pro_id, pro_name from product a
where not exists(select * from product where pro_sec=a.pro_sec-1)
and a.proc_sec<>(select isnull(min(pro_sec),0) from product)
有些开发工具的update可以设置为:先delete加再insert的等效操作。
这种情况下没有使用数据库的update!
if object_id('t1') is not null
drop table t1
go
create table t1(id int identity(1,1),a int)
go
create trigger tr_t1 on t1
for insert
as
if exists(select 1 from inserted where a = 10)
rollbackgoinsert t1 values(1)
insert t1 values(3)
go
insert t1 values(10) -- 此行会rollback
go
insert t1 values(15)
go
select * from t1
/*显示结果为:
id a
----------- -----------
1 1
2 3
4 15(所影响的行数为 3 行)
*/