Published 2022. 11. 24. 17:30

  < 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
복사했습니다!