본문 바로가기

카테고리 없음

SEQUENCE(시퀀스) 와 SYNONYM(동의어)

728x90

시퀀스

시퀀스는 일련번호라고 볼 수 있음

 

예를들어 쇼핑물 주문번호에 대한 일련번호를 부여할 때 아래의 3종류의 시퀀스를 사용 가능

  • 오라클 시퀀스 : 한계치를 정하고 그 한계치까지 차례로 번호가 들어가도록
  • 주문번호 테이블 별도 추가 : insert와 update를 통해서 계속 추가 가능 / 날짜+번호 조합 많이 사용
  • 테이블 컬럼에 직접 insert하고 컬럼 조회를 할 때마다 max+1을 insert 시킴

 

 

- cycle : 한계치에 다다르면 다시 순환

MAX/MIN 도달시

 

- 최대, 최소값에 도달하면 위와 같은 오류가 발생하게 됨

 

<예제>

 

- 시퀀스 생성

 

 

- 넥스트 하나를 해주면 101이 되며, 조회할 때 마다 1씩 올라가게 됨

- 최대로 지정한 110이 되면 cycle을 통해 순환하기 때문에 최소치인 90으로 돌아가서 다시 번호 오름

- 만약 nocycle이었다면 최대치에 이른 이후에 다시 nextval을 하게되면 순환하지 않기 때문에 오류 발생

 

- 시퀀스 삭제도 테이블 삭제처럼 drop를 사용해주면 됨

 

<예제>

 

- 이렇게 만들면 조회할 때마다 -2씩 번호가 줄어들고 0이 되면 다시 20에서 시작

 

동의어

 

- 테이블 이름이 길어지는 경우 짧게 동의어를 만들어 사용하는 것

 

권한 문제

 

- 권한을 받은 사람만 동의어를 만들 수 있음

 

<예제>

 

- 그냥 이렇게 만들면 위에서 본 권한이 없다는 오류가 발생

 

 

- 시스템 계정으로 접속해서 grant를 사용해 scott에게 권한을 부여

- 다시 emp테이블을 참조하는 동의어를 생성하고 이를 조회하면 emp테이블의 정보가 출력되는 것 확인 가능

 

 

 

728x90