棘手的问题:如何返回一个不重复的id值?
棘手的问题:如何返回一个不重复的id值?, (U$v2p&\3s0K)X
注意:是返回不重复的id值,不要用存储过程,请用函数实现 -Q6e1H$g2y'Y'a0c5?
假设函数名是gen_id(), 4j)N4?*i,s
如果第1次执行select gen_id(),返回一个id值
,c3G(H6P&V |%C7q如果第2次执行select gen_id(),返回一个id值
!q(^8T*x.[#^/`$M……
-T;L3f-G8R `9H0T但每次返回的id都不能和前面的相同,用存储过程可以实现,
]&c*X;A;M3}%`4M但是无法在“select dbo.gen_id(),* from 表”中使用,所以请用函数实现
8['p9~9w/Y,p3{4X下面是我写的脚本,但是调用时不能通过,为何???
%I"n3l O"u([TechWeb-技术社区--
)_+o)v/m1J%W5{/~:uif object_id('rid_table')>0 drop table rid_table
*C6X4?)Q0x&ngo
'N#[!o'i0i!N*r程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛create table dbo.rid_table (rid_id int identity(1,1)) tech.techweb.com.cn!A9J-t3L(e2D#q/u
go
)q2B G8M.J'T+H5^程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛-- tech.techweb.com.cn/k W1I$\6S0e
if object_id('rid_insert_row')>0 drop proc rid_insert_row &^5c6B*H o+L:k
go 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛)z.H3v7q8d7Y(B
create proc rid_insert_row -r2L \+W&|$W P3q
as 1b/S#^7C'p1b1N:r h5`
insert into rid_table default values 5G&Q0A6S5S(H)j P
-- 9o(h(P/g8d1s!c3Y*x
go
7O-`/S.k.x0v%S8B/d*\程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛if object_id('gen_id')>0 drop function gen_id 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛2A#T%L3s6T#o:~;~+z%Q*T
go
7R-j%Q7_#r6e0aTechWeb-技术社区create function dbo.gen_id()
"?3X,C!k8O1S'creturns int *~;j:H7o4J$a&b1X Z
as
4b%U6u4X:i1_8F:N!OTechWeb-技术社区begin .V;r1p!p4`4A)b
declare @r int
4x!|!v W+d;m2G2Ztech.techweb.com.cnexec rid_insert_row 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛.~4u#?7u7\:U
select @r=ident_current('rid_table') 5{%B+Z&B6p/b#[
return @r }+h:_%k"i%w1F#K7i
end
E/c-{#|5V2V I#q-- 1L4Z2q*v b D*P/I
go tech.techweb.com.cn6x'E-m8I;y9a3h.F
select dbo.gen_id(),* from master.dbo.systypes
|