CREATE SEQUENCE SEQ_TOPIC;
SEQUENC를 이용해서 자동으로 1씩 증가시키는 Primary Key 값을 만들 수 있다.
INSERT INTO topic
(id,title,description,created)
VALUES
(4,'MongoDB','MongoDB is...',SYSDATE);
SEQUENCE를 이용하지 않으면 id의 값을 넣어줘야하지만 SEQUENCE를 활용하면 다음과 같이 바꿔쓰면 된다.
▼
INSERT INTO topic
(id,title,description,created)
VALUES
(SEQ_TOPIC.NEXTVAL,'MongoDB','MongoDB is...',SYSDATE);
VAL은 VALUE
자 그렇다면 한번 이미지를 그려보자!
SEQ_TOPIC이라고 하는 SEQUENCE 장치 안에 현재 0이라는 숫자가 있는 상태라면
.NEXTVAL이라고 하는 저 명령을 내리면 SEQUENCE라고 하는 기계는
자기가 갖고 있던 0이라는 숫자를 1을 증가시키고
그 값을 우리한테 줘서 1을 증가시켜 보여주게 된다.
자 그러면 기존에 있는 topic의 값과
SEQUENCE 값과 충동할 수 있으니 지우고
SEQUENCE를 이용해보자!
▼
[값을 지울 때 /실습을 위해서 전체 삭제하게 했지만 실제로는 절대절대 금지!!]
DELETE FROM topic;
▼
▼
Q. 그렇다면 우리가 현재 가지고 있는 SEQUENCE의 현재 값이 뭔지 알고 싶을 때는 어떻게 해야 할까?
SELECT SEQ_TOPIC.CURRVAL FROM topic;
▼
위에 처럼 topic을 입력하게되면
topic 테이블에 있는 행의 갯수만큼 똑같은 값들이 출력되게 된다.
그래서 이럴때는
DUAL이라고 하는 일종의 가상의 느낌이 나는
가짜 표와 같은 특수한 테이블이 있다.
그럴 때 DUAL이란 것을 쓰면 값을 하나만 뱉어준다.
SELECT SEQ_TOPIC.CURRVAL FROM DUAL;
SEQUENCE는 항상 PRIMARY KEY는 패밀리라고 생각하자.
이 두가지는 서로 같이 있을 때 강력해진다.
'SQL > sqlplus' 카테고리의 다른 글
ORACLE(PRIMARY KEY) (0) | 2021.04.02 |
---|---|
ORACLE(행 삭제) (0) | 2021.04.02 |
ORACLE(행 수정) (0) | 2021.04.02 |
ORACLE(행 읽기 - 정렬과 페이징) (0) | 2021.04.02 |
ORACLE(행 읽기 - 행과 컬럼 제한하기) (0) | 2021.04.02 |