7 个解决方案
#2
use Tempdb
go
create table T(ID int primary key,Name sysname)
go
create procedure P1(@Name sysname)
as
declare @ID int
select @ID=isnull(max(ID)+1,1) from T
insert T values(@ID,@Name)
go
exec P1 @Name='a'
exec P1 @Name='b'
go
select * from T
/*
ID Name
1 a
2 b
*/
#3
1.单笔新增的话,还好处理,同时新增多笔,就比较麻烦
2.多个同时新增,也比较麻烦
2.多个同时新增,也比较麻烦
#4
select identity(int,1,1) as id2,* into tb2 from tb1
drop table tb1 ---删除旧表
exec sp_rename 'tb2','tb1' ---修改旧表的名称为新表
alter table tb1 drop column id ---删除就得标志列
exec sp_rename 'tb2.id2','id','column'----将新的标志列的名称修改成id
要知道怎么做,只要开启profile,再在企业管理器里面更改一下,就能跟踪到语句了
#5
select @@indentity
#6
如果业务规则要求id字段必须是连续的流水或者满足别的什么混蛋的逻辑,可以在存储过程搞
否则的话还是identity列比较方便啊...
否则的话还是identity列比较方便啊...
#7
--表中最大的id+1
select max(id)+1 from tb
#1
#2
use Tempdb
go
create table T(ID int primary key,Name sysname)
go
create procedure P1(@Name sysname)
as
declare @ID int
select @ID=isnull(max(ID)+1,1) from T
insert T values(@ID,@Name)
go
exec P1 @Name='a'
exec P1 @Name='b'
go
select * from T
/*
ID Name
1 a
2 b
*/
#3
1.单笔新增的话,还好处理,同时新增多笔,就比较麻烦
2.多个同时新增,也比较麻烦
2.多个同时新增,也比较麻烦
#4
select identity(int,1,1) as id2,* into tb2 from tb1
drop table tb1 ---删除旧表
exec sp_rename 'tb2','tb1' ---修改旧表的名称为新表
alter table tb1 drop column id ---删除就得标志列
exec sp_rename 'tb2.id2','id','column'----将新的标志列的名称修改成id
要知道怎么做,只要开启profile,再在企业管理器里面更改一下,就能跟踪到语句了
#5
select @@indentity
#6
如果业务规则要求id字段必须是连续的流水或者满足别的什么混蛋的逻辑,可以在存储过程搞
否则的话还是identity列比较方便啊...
否则的话还是identity列比较方便啊...
#7
--表中最大的id+1
select max(id)+1 from tb