CART 테이블의 CAART_NO를 생각해보자.
입장 순서대로 자동으로 날짜+입장번호를 부여한다 << !
값이 한번 증가하면 다시 돌아갈수 없음...
(사용형식)
CREATE SEQUENCE 시퀀스명
[START WITH n] -- 시작값 설정 생략하면 n은 MINVALUE값
[INSERT BY n] -- 증가(감소) 값 생략하면 n은 1
[MAXVALUE n| NOMAXVALUE] -- 최댓값 설정 기본은 NOMAXVALUE이고 그때 n은 10^27
[MINVALUE N| NOMINVALUE] -- 최솟값 설정 기본은 NOMINVALUE이고 그때 n은 1
[CYCLE|NOCYCLE] -- 최대(최소)값에 도달한 후 다시 시퀀스를 생성할 경우는 CYCLE, 기본은 NOCYCLE
[CACHE n|NOCACHE] -- 캐쉬메모리를 이용한 시퀀스 생성여부 기본은 CACHE 20
[ORDER | NOORDER] -- 요청 순서대로 시퀀스 생성보장(ORDER), 기본은 NOORDER
+) 시퀀스값 참조방법
유사컬럼 | 의미 |
---|---|
시퀀스명.nextval | 시퀀의 다음값 반환 |
시퀀스명.currval | 시퀀의 현재값 반환 |
+) 시퀀스 생성 후 처음 수행되어야 할 명령은 ‘시퀀스명.nextval’이어야 함
10번부터 시퀀스 넣기 시작해야 안전(?)
0번부터 999까진 버리고 ( 2CHARACTER 만들어야됨)
1000번부터 쓰기시작... 네자리니까... 자릿수 맞추려고...!!!!!!!!
맨처음에 P1000으로 시작! (2 CHARACTER 안만들어도 됨)
CREATE SEQUENCE SEQ_SAMPLE -- 1부터 1씩 증가하는 시퀀스 생성
START WITH 100; --100부터 카운팅 되어지는 시퀀스
SELECT SEQ_SAMPLE.CURRVAL FROM DUAL;
이 세션에선 CURRVAL이 아직 할당되지 않았기 때문에 오류남
맨처음 사용하는 의사컬럼은 NEXTVALUE부터!!!!
SELECT SEQ_SAMPLE.NEXTVAL FROM DUAL;
SELECT SEQ_SAMPLE.CURRVAL FROM DUAL;
한번 더 RUN 하면
지나간 값인 100은 이제 다시 사용 못함 > 삭제해야지 사용 가능
[자료]
CREATE SEQUENCE SEQ_LPROD_ID
START WITH 10;
INSERT INTO LPROD(LPROD_ID,LPROD_GU,LPROD_NM)
VALUES(SEQ_LPROD_ID.NEXTVAL,'P501','농산물');
INSERT INTO LPROD(LPROD_ID,LPROD_GU,LPROD_NM)
VALUES(SEQ_LPROD_ID.NEXTVAL,'P502','수산물');
INSERT INTO LPROD(LPROD_ID,LPROD_GU,LPROD_NM)
VALUES(SEQ_LPROD_ID.NEXTVAL,'P503','임산물');
SELECT * FROM LPROD;
(사용형식)
CREATE [OR REPLACE] SYNONYM 동의어 FOR 객체명;
- '객체명'에 '동의어'라는 이름을 하나 더 부여하여 모두 같은 기능으로 사용
CREATE OR REPLACE SYNONYM EMP FOR HR.EMPLOYEES;
CREATE OR REPLACE SYNONYM DEPT FOR HR.DEPARTMENTS;
SELECT*FROM EMP; // HR계정의 EMPLOYEES가 불러와진다! 언제 어디에서나 EMP로 불러올수 있게됨
SELECT*FROM DEPT;