棘手的问题:如何返回一个不重复的id值?
棘手的问题:如何返回一个不重复的id值?,
注意:是返回不重复的id值,不要用存储过程,请用函数实现
假设函数名是gen_id(),
如果第1次执行select gen_id(),返回一个id值
如果第2次执行select gen_id(),返回一个id值
……
但每次返回的id都不能和前面的相同,用存储过程可以实现,
但是无法在“select dbo.gen_id(),* from 表”中使用,所以请用函数实现
下面是我写的脚本,但是调用时不能通过,为何???
--
if object_id('rid_table')>0 drop table rid_table
go
create table dbo.rid_table (rid_id int identity(1,1))
go
--
if object_id('rid_insert_row')>0 drop proc rid_insert_row
go
create proc rid_insert_row
as
insert into rid_table default values
--
go
if object_id('gen_id')>0 drop function gen_id
go
create function dbo.gen_id()
returns int
as
begin
declare @r int
exec rid_insert_row
select @r=ident_current('rid_table')
return @r
end
--
go
select dbo.gen_id(),* from master.dbo.systypes