sqlserver数据库最大Id冲突问题解决方法之一

时间:2021-09-02 01:10:30

代码如下:


CREATE TABLE [dbo].[TbGuidTable]( 
[TableName] [varchar](50) NOT NULL, 
[KeyName] [varchar](20) NOT NULL, 
[KeyValue] [varchar](100) NOT NULL 
) ON [PRIMARY] 

GO 

if exists (select * from dbo.sysobjects where id = object_id(N'PCreateGuid') and OBJECTPROPERTY(id, N'IsProcedure') = 1) 
drop procedure PCreateGuid 
GO 
------------------------------------ 
--用途:增加一条记录 个人信息 
--项目名称: 
--说明: 
--时间:2011-7-4 15:34:12,2011-08-15 
------------------------------------ 
CREATE PROCEDURE PCreateGuid 
@tableName varchar(50), 
@keyname varchar(100), 
@guid varchar(100) out 
as 
if not exists(select * from TbGuidTable where tablename=@tableName and keyname=@keyname) 
insert into TbGuidTable (tablename,keyname,keyvalue) values(@tableName,@keyname,10000) 
update TbGuidTable set keyvalue=keyvalue+1 where tablename=@tableName and keyname=@keyname 
select @guid=cast(keyvalue as varchar) from TbGuidTable where tablename=@tableName and keyname=@keyname 
Go 

---*****--- 
declare @tableName varchar(50) 
declare @keyname varchar(100) 
declare @guid varchar(100) 
set @tableName='tb1' 
set @keyname='def' 
execute PCreateGuid @tableName,@keyname,@guid out 
print @guid