Database
[Oracle] SEQUENCE와 동의어 생성/삭제/수정
홍크
2021. 6. 1. 22:43
728x90
시퀀스(sequence) 란?
- 특별한 숫자 식별자를 생성하는 방법에서 사용하는 오브젝트다.
- UNIQUE 또는 PRIMARY KEY에서 사용하기 위한 일종의 일련번호다.
- 단독으로 사용될 때는 의미를 가지지 않으며 테이블을 위해 사용한다.
- 실제 시퀀스 길이에 제한이 있기 때문에 재 사용시에는 다른 컬럼과 복합하여 UNIQUE 또는 PRIMARY KEY를 구성한다.
시퀀스 생성
CREATE SEQUENCE TEST_SEQ
INCREMENT BY 1 --INCREMENT : 한번씩 증가
START WITH 10
MAXVALUE 100 --생략가능
MINVALUE 1 ; --생략가능
-- CURRVAL = 현재 SEQ 값 NEXTVAL한번 실행후에 확인가능
SELECT TEST_SEQ.CURRVAL
FROM DUAL;
-- NEXTVAL
SELECT TEST_SEQ.NEXTVAL
FROM DUAL;
시퀀스 삭제
DROP SEQUENCE 시퀀스명
시퀀스 수정
ALTER SEQUENCE TEST_SEQ
INCREMENT BY 3;
시퀀스 예시
-- sequence 생성
CREATE SEQUENCE TEST_SEQ
INCREMENT BY 1 --INCREMENT : 하나씩 증가
START WITH 10
MAXVALUE 100 --생략가능
MINVALUE 1 ; --생략가능
-- CURRVAL = 현재 SEQ 값 NEXTVAL한번 실행후에 확인가능
SELECT TEST_SEQ.CURRVAL
FROM DUAL;
-- NEXTVAL
SELECT TEST_SEQ.NEXTVAL
FROM DUAL;
-- 수정
ALTER SEQUENCE TEST_SEQ
INCREMENT BY 3;
동의어란?
데이터베이스 전체에서 사용이 가능한 알리아스
- 비공개 동의어
- 공용 동의어
동의어 사용목적
- 데이터베이스의 보안성
- 사용의 편의성
- 권한관리의 편의성
동의어 생성
CREATE SYNONYM [스키마]
FOR [대상스키마];
-- 테스트를 위한 사용자 생성 TEST1
DROP USER TEST1;
CREATE USER TEST1
IDENTIFIED BY 'sa123';
GRANT "CONNECT", "RESOURCE" TO TEST1;
-- 동의어 생성
CREATE SYNONYM HR.EMP FOR HR.EMPLOYEES;
-- 공용 동의어 생성
CREATE PUBLIC SYNONYM EMP1 FOR HR.EMPLOYEES;
--권한 없이 동의어 실행시 에러 발생
-- SYSTEM 계정으로 접속해서 권한 부여
GRANT SELECT ON HR.EMP TO TEST1;
GRANT SELECT ON EMP1 TO TEST1;
-- SYSTEM 계정으로 접속해서 권한 삭제
REVOKE SELECT ON EMP1 FROM TEST1;
동의어 이름 바꾸기
-- 동의어 이름 바꾸기(생성 스키마만 변경가능)
-- 공용 동의어는 이름 바꾸기 불가능 -PUBLIC 스키마에 포함
-- RENAME [이전동의어] TO [신규동의어];
RENAME EMP TO EMP0;
동의어 삭제
DROP SYNONYM [스키마]동의어;
동의어 예시
CREATE SYNONYM EMP
FOR EMPLOYEES;
INSERT INTO EMP(employee_id, last_name, email, hire_date, job_id)
VALUES (EMPLOYEES_SEQ.nextval, '공손', '123@naver.com', SYSDATE, 'IT_PROG');
SELECT * FROM employees;
728x90