服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Sql Server - sqlserver数据库最大Id冲突问题解决方法之一

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

2019-12-12 16:14MSSQL教程网 Sql Server

在一个特定的表中保存最大Id,通过记录来取每次的唯一最大值

代码如下:


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 

延伸 · 阅读

精彩推荐