asp.net老项目运维,出现的问题6之数据库

数据库会有很多张表,表内一般会有自增列,如果想统一管理这个自增数值,可以使用如下方法,放在一个存储过程中,想用的时候调用存储过程即可生成数据库层面的全局唯一值:

复制代码
create procedure [dbo].[P_getSeqID] 
as
begin
      declare @NewSeqID int

      set NOCOUNT ON
      insert into table1 (SeqID) values ('abc')   
      set @NewSeqID = scope_identity()   
      delete from table1 WITH (READPAST)

return @NewSeqID

end
GO

解释一下存储过程

declare SeqID int

这句表示定义一个变量叫NewSeqID,是int型;

insert into table1 (SeqID) values ('abc')

你要提前建立一张表table1,加一个字段叫ID(标识自增),另一个字段叫SeqID,往SeqID里面写任意值,这里我写abc;

set @NewSeqID = scope_identity()

给NewSeqID赋值,scope_identity() 是从本存储过程中获取最后一次插入table1表数据行的自增值;

delete from table1 WITH (READPAST)

将插入的值删掉,标尺table1表永远是空的,为了避免冗余,WITH (READPAST) 是避免并发脏读情况发生。最后返回NewSeqID

相关推荐
高梦轩3 小时前
MySQL高可用
android·运维·数据库
紫金修道6 小时前
【DeepAgent】概述
开发语言·数据库·python
孟章豪6 小时前
《SQL拼接 vs 参数化,为什么公司禁止拼接SQL?(附真实案例)》
服务器·数据库·sql
荒川之神6 小时前
ORACLE LEVEL函数练习
数据库·oracle
·云扬·7 小时前
【MySQL】实战:用pt-table-sync修复主从数据一致性问题
数据库·mysql·ffmpeg
swIn KWAL7 小时前
【MySQL】环境变量配置
数据库·mysql·adb
shark22222227 小时前
【JOIN】关键字在MySql中的详细使用
数据库·mysql
RATi GORI7 小时前
MySQL中的CASE WHEN语句:用法、示例与解析
android·数据库·mysql
坊钰7 小时前
Java 死锁问题及其解决方案
java·开发语言·数据库
onebound_noah8 小时前
【实战教程】如何通过API快速获取淘宝/天猫商品评论数据(含多语言Demo)
大数据·数据库