티스토리 뷰

Sequence - 시퀀스 사용


시퀀스명.NEXTVAL

- 사용 가능한 다음 시퀀스 값 반환


시퀀스명.CURRVAL

- 현재 시퀀스 값, 즉 마지막 시퀀스 값 반환


1
2
SELECT dept_id_seq.currval
FROM dual;
cs


daul

- 단순한 출력


에러뜨는 이유

- 시퀀스 방금 만들고 사용한 적이 없어서

- 즉, 마지막으로 사용한 시퀀스가 없다

 → 정의되어 있는 것이 없다

 → NEXTVAL이 사용되고 CURRVAL이 사용되어야 한다 


1
2
INSERT INTO departments
VALUES (dept_id_seq.NEXTVAL, 'AAA'2051700);
cs


1
2
3
SELECT *
FROM departments
ORDER BY department_id DESC;
cs


1
2
INSERT INTO departments (department_id, department_name)
VALUES (dept_id_seq.NEXTVAL, 'BBB');
cs


1
2
3
SELECT *
FROM departments
ORDER BY department_id DESC;
cs



임시 데이터 상태

1
COMMIT;
cs


1
2
INSERT INTO departments
VALUES (dept_id_seq.NEXTVAL 'CCC'NULLNULL);
cs


1
2
3
SELECT *
FROM departments
ORDER BY department_id DESC;
cs


1
ROLLBACK;
cs



1
2
3
SELECT *
FROM departments
ORDER BY department_id DESC;
cs

INSERT 취소됨


1
2
INSERT INTO departments
VALUES (dept_id_seq.NEXTVAL, 'FFF'NULLNULL);
cs


1
2
3
SELECT *
FROM departments
ORDER BY department_id DESC;
cs


시퀀스는 ROLLBACK 해도 초기화되지않고 계속 이어진다 == 갭이 발생한다

INSERT 취소된 건 수동으로 넣어야한다

공지사항
최근에 올라온 글
Total
Today
Yesterday