250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- JavaScript
- SpringBoot
- STS
- maven
- oracle
- myBatis
- PostgreSQL
- AJAX
- 오픈소스
- jpa
- Docker
- Open Source
- Source
- Spring Boot
- Thymeleaf
- 문서
- Core Java
- git
- Tomcat
- Python
- error
- ubuntu
- MySQL
- IntelliJ
- Eclipse
- JDBC
- spring
- 설정
- Exception
- MSSQL
Archives
- Today
- Total
헤르메스 LIFE
[MSSQL] Sequence 생성 본문
728x90
Oracle 에 있던 Sequence 가 MSSQL 에도 있습니다.
MSSQL 2012 버전 이상 부터 지원된다고 합니다.
생성하는 구문은 비슷합니다.
Oracle Sequence 생성
CREATE SEQUENCE 시퀀스명 START WITH 시작값 /* 시작값의 디폴트값은 증가일때 MINVALUE 감소일때 MAXVALUE */ INCREMENT BY 증감숫자 /* 양수면 증가 음수면 감소 디폴트는 1 */ NOMINVALUE OR MINVALUE 최소값 /* NOMINVALUE : 디폴트값 설정, 증가일때 1, 감소일때 -1028 MINVALUE : 최소값 설정, 시작숫자와 작거나 같아야하고 MAXVALUE보다 작아야함 */ NOMAXVALUE OR MAXVALUE 최대값 /* NOMAXVALUE : 디폴트값 설정, 증가일때 1027 감소일때 -1 -- MAXVALUE : 최대값 설정 시작숫자와 같거나 커야하고 MINVALUE보다 커야함 */ CYCLE OR NOCYCLE /* CYCLE 설정시 최대값에 도달하면 최소값부터 다시 시작 NOCYCLE 설정시 최대값 생성 시 시퀀스 생성중지 */ CACHE OR NOCACHE /* CACHE 설정시 메모리에 시퀀스 값을 미리 할당하고 NOCACHE 설정시 시퀀스값을 메로리에 할당하지 않음 */ |
MSSQL Sequence 생성
CREATE SEQUENCE 시퀀스명 AS START WITH 시작값 /* 시작값의 디폴트값은 증가일때 MINVALUE 감소일때 MAXVALUE */ INCREMENT BY 증감숫자 /* 양수면 증가 음수면 감소 디폴트는 1 */ MINVALUE 최소값 /* NOMINVALUE : 디폴트값 설정, 증가일때 1, 감소일때 -2147483648 MINVALUE : 최소값 설정, 시작숫자와 작거나 같아야하고 MAXVALUE보다 작아야함 */ MAXVALUE 최대값 /* NOMAXVALUE : 디폴트값 설정, 증가일때 2147483647 감소일때 -1 -- MAXVALUE : 최대값 설정 시작숫자와 같거나 커야하고 MINVALUE보다 커야함 */ CYCLE OR NOCYCLE /* CYCLE 설정시 최대값에 도달하면 최소값부터 다시 시작 NOCYCLE 설정시 최대값 생성 시 시퀀스 생성중지 */ CACHE OR NOCACHE /* CACHE 설정시 메모리에 시퀀스 값을 미리 할당하고 NOCACHE 설정시 시퀀스값을 메로리에 할당하지 않음 */ |
Oracle Sequence 사용
SELECT 시퀀스명.NEXTVAL FROM DUAL; /* 다음 순번값 조회 */ SELECT 시퀀스명.CURRVAL FROM DUAL; /* 현재 순번값 조회 */ |
MSSQL Sequence 사용
SELECT NEXT VALUE FOR 시퀀스명 FROM DUAL; /* 다음 순번값 조회 */ |
/* 테스트 테이블생성 */
CREATE Table SeqTestTable
(
SeqID int identity (1,1),
registDateTime datetime,
dailyID int
)
GO
/* 1/1일데이터 저장 */
insert into SeqTestTable(registDateTime,dailyID) values ('2020-01-01',NEXT VALUE FOR dbo.DailySEQ)
insert into SeqTestTable(registDateTime,dailyID) values ('2020-01-01',NEXT VALUE FOR dbo.DailySEQ)
insert into SeqTestTable(registDateTime,dailyID) values ('2020-01-01',NEXT VALUE FOR dbo.DailySEQ)
insert into SeqTestTable(registDateTime,dailyID) values ('2020-01-01',NEXT VALUE FOR dbo.DailySEQ)
insert into SeqTestTable(registDateTime,dailyID) values ('2020-01-01',NEXT VALUE FOR dbo.DailySEQ)
/* 시퀀스번호 다시 설정*/
ALTER SEQUENCE dbo.DailySEQ
RESTART WITH 1 ;
/* 1/2일데이터 저장 */
insert into SeqTestTable(registDateTime,dailyID) values ('2020-01-02',NEXT VALUE FOR dbo.DailySEQ)
insert into SeqTestTable(registDateTime,dailyID) values ('2020-01-02',NEXT VALUE FOR dbo.DailySEQ)
select * from SeqTestTable
728x90
'Database' 카테고리의 다른 글
[Oracle] 테이블 정보 조회 + Camel 표기 (0) | 2020.11.24 |
---|---|
[Oracle] Oracle 채번의 빠진 번호 찾기 (0) | 2020.11.21 |
[Tibero] Database 생성부터 User 생성까지 (0) | 2020.11.19 |
[Tibero] 시작 / 종료 (0) | 2020.11.19 |
[MySQL] 테이블 및 컬럼, 코멘트 조회 (0) | 2020.11.18 |