< VIEW 옵션 >
[상세표현법]
CREATE [OR REPLACE] [FORCE|"NOFORCE"] VIEW 뷰명
AS 서브쿼리
[WITH CHECK OPTION]
[WITH READ ONLY]
- FORCE /NOFORCE
> FORCE : 서브쿼리에 기술된 테이블이 존재하지 않아도 뷰 생성가능
> NOFORCE : 서브쿼리에 기술된 테이블이 존재해야만 뷰 생성가능 (생략시 기본값)
- WITH CHECK OPTION : DML시 서브쿼리에 기술된 조건에 부합하는 값으로만 DML(조작)가능하도록
- WITH READ ONLY : 뷰에대해 조회만 가능(DML문 수행 불가)
1) NOFORCE : 서브쿼리에 제시된 테이블이 없으면 뷰도 만들어지 지지 않음 (기본값)
CREATE OR REPLACE /*NOFORCE*/VIEW VW_TEST
AS SELECT TCODE,TNAME,TCONTENT
FROM TT;
>> 에러
2) FORCE : 서브쿼리에 테이블이 존재하지 않아도 뷰 생성 가능
CREATE OR REPLACE FORCE VIEW VW_TEST
AS SELECT TCODE,TNAME,TCONTENT
FROM TT;
>> 뷰는 만들어 지지만 실제 TT테이블을 생성해야만 VW_TEST를 활용 가능
3) WITH CHECK OPTION : 서브쿼리에 기술된 조건에 맞지 않으면 오류 발생
CREATE OR REPLACE VIEW VW_EMP
AS SELECT *
FROM EMPLOYEE
WHERE SALARY >= 3000000
WITH CHECK OPTION;
UPDATE VW_EMP
SET SALARY =2000000
WHERE EMP_ID = 200; -- 에러
UPDATE VW_EMP
SET SALARY =4000000
WHERE EMP_ID = 200; --성공
>> 200번 사원의 급여를 300만원 이하로 변경시 에러발생 ( 300만원 이상일시는 정상처리)
4) WITH READ ONLY : 뷰에대해 조회만 가능 (DML문 불가능)
CREATE OR REPLACE VIEW VW_EMP
AS SELECT EMP_ID,EMP_NAME,BONUS
FROM EMPLOYEE
WHERE BONUS IS NOT NULL
WITH READ ONLY;
'ORACLE' 카테고리의 다른 글
ORACLE 13. PLSQL _조건문 (0) | 2022.11.25 |
---|---|
ORACLE 12. OBJECT (SEQUENCE) (0) | 2022.11.25 |
ORACLE 11. OBJECT (VIEW) _ DML (0) | 2022.11.24 |
ORACLE 11. OBJECT (VIEW) (0) | 2022.11.24 |
ORACLE 10. TCL (COMMIT, ROLLBACK,SAVE POINT) (0) | 2022.11.24 |