sqlserver Oacle 을 실현 하 는 sequence 방법
인터넷 에서 흔히 볼 수 있 는 저장 과정 은 현재 라 이브 러 리 에 사용 되 는 Sequence 에 표를 만 드 는 것 이다.예 를 들 어'AllSequence'는 네 개의 필드[이름,출발점 값,부가 가치,현재 값]을 포함 하고 Sequence 를 만 들 때 하나의 기록 을 만 들 고 Sequence 를 얻 을 때 해당 줄 의 현재 값 에서 부가 가치 에 따라 증가한다.
동시성 요청 이 그리 높 지 않 은 시스템 에 서 는 이런 과정 에 문제 가 없다.그러나 동시성 요청 이 어떤 급 에 있 으 면 이 과정 에 문제 가 생기 는 경우 가 많다.
다음은 1 초 에 수천 번 의 요청 과 같은 높 은 스루풋 의 방문 요청 에 적합 한 개선 방법 입 니 다.
-- T_0101001 Sequence
-- SeqT_0101001
create table SeqT_0101001(
-- ID
SeqID int identity(1,1) primary key,
-- Sequence
SeqVal varchar(1)
)
-- SeqT_0101001 Sequence
create procedure P_GetNewSeqVal_SeqT_0101001
as
begin
-- Sequence
declare @NewSeqValue int
-- 、
set NOCOUNT ON
-- SeqT_0101001
insert into SeqT_0101001 (SeqVal) values ('a')
-- Sequence SeqT_0101001
set @NewSeqValue = scope_identity()
-- SeqT_0101001 ( )
delete from SeqT_0101001 WITH (READPAST)
-- Sequence
return @NewSeqValue
end
-- Sequence
Declare @NewSeqVal int
Exec @NewSeqVal = P_GetNewSeqVal_SeqT_0101001
Print @NewSeqVal
방금 우리 가 언급 한'20080724000056'이라는 형식 을 얻 으 려 면 다음 과 같이 하면 됩 니 다
select Convert(char(8),Getdate(),112) + right('00000'+CAST(@NewSeqVal AS varchar(5)),5) as mySeq
그러나 유용 하고 불쾌 한 점 은 저장 과정 이 아 닌 select 의 문장 에서 직접 사용 할 수 없다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
우분투에 SQL 서버 설치Microsoft SQL Server는 오늘날 업계에서 가장 눈에 띄는 데이터베이스 중 하나입니다. 이번 포스팅에서는 우분투에 설치하는 방법을 알려드리겠습니다. sudo 권한이 있는 계정 1단계: 터미널 열기 단축키...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.