保证程序的正确性,主键ID首先具有唯一性,设置自动增长在前台Insert的时候不需要传入ID的值,数据库自动根据最后一个ID值增加1保证数据库主键不重复而且调用更为高效。
假如说没有设置自动增长在insert一条记录的时候需要人为传递ID值。要保证唯一性必须要先获得上条记录的ID用select然后再加一然后在执行insert从效率方面降低程序的灵活性。
个人见解。
在原本的自动增长列上实现你的要求是不可能的,如果你非要这么做,我有个办法,就是把自动增长关掉,例子如下:
create table z (id int primary key(id))
go
create function f_id ()
returns int
as
begin
declare @id int,@i int,@count int,@maxid int
select @i=1
select @count=count() from z
select @maxid=max(id) from z
if @maxid is null
select @id=1
else
if @count=@maxid
select @id=@maxid+1
else
while @i<=@maxid
begin
if not exists (select from z where id=@i)
begin
select @id=@i
break
end
select @i=@i+1
end
return @id
end
go
insert into z values (dbof_id())
以上,希望对你有所帮助!
这个就是自增列的缺陷,自增列你是不可以改的,它的两个属性是,一个种子,一个自增量,种子是从第几个开始,自增量是每次增加多少个,你可以改的只有这两个值,不管你删除什么,下面的都是从最后一个开始增长,因为你删除了后,它的实际值在服务器端还是存在的,因为自增的你又不可用自己手动添加,所以这个是没有办法的!
显示的时候有个index的东西,那个可以按照顺序排列!
以上就是关于数据库设置主键的时候用,为什么设置自动增长全部的内容,包括:数据库设置主键的时候用,为什么设置自动增长、数据库自增列、数据库id自增等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)