存储过程,用于生成唯一ID,并且在 并发情况下,保证了 ID序号的唯一性。
可以应用在,数据库系统中,作全局唯一序号的获取。
以下代码用于 SQL Server 2000
CREATE PROCEDURE GetNewID AS
DECLARE
@ID int;
BEGIN TRANSACTION
INSERT INTO SysNewID (TmpInt) Values(1);
SET @ID = IDENT_CURRENT('SysNewID')
COMMIT TRANSACTION
return @ID
GO
/* 相关函数说明,来自 sql server 2000 帮助文件
语法
IDENT_CURRENT('table_name')
参数
table_name
是将要返回其标识值的表的名称。table_name 的数据类型为 varchar,没有默认值。
IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
*/
//辅助生成ID的数据表
CREATE TABLE [dbo].[SysNewID] (
[ID] [int] IDENTITY (1, 1) NOT NULL , //自动加一的字段.
[Tmpint] [int] NULL
) ON [PRIMARY]
/* 查询分析器中的测试代码 */
declare @ID int
exec @ID = GetNewID
print @ID