본문 바로가기

database

ORACLE dictionary (user_updatable_columns)

View에 대해 select를 제외한 dml문장이 적용될수 있는지를 볼수 있는 oracle dictionary가 있습니다.

 

PORTAL이라는 오라클 계정이 있고..

그 계정에 다음과 같이 뷰를 생성할 수 있는 시스템 권한과, EMP, USER_INFO 테이블에 대한 오브젝트 권한을 줍니다.

-- System Privileges for PORTAL

GRANT CREATE VIEW TO PORTAL;

-- Object Privileges for PORTAL

GRANT SELECT, UPDATE ON  SCOTT.EMP TO PORTAL;

GRANT SELECT, UPDATE ON  SCOTT.USER_INFO TO PORTAL;

 

PORTAL계정으로 다음과 같이 view를 생성하면

CREATE OR REPLACE VIEW USER_INFO

(USER_SEQ, USER_ID, USER_NAME, USER_DESC, REG_DATE)

AS

SELECT user_seq,

          user_id,

          user_name,

          user_desc,

          reg_date

   FROM   scott.user_info

/

View에 대해 DML문장을 실행할 수 있습니다.

이걸 확인할려면 다음 dictionary를 이용하면 됩니다.

SELECT *

FROM   user_updatable_columns

WHERE  table_name = 'USER_INFO'

 

결과는 UPDATABLE, INSERTABLE, DELETABLE 컬럼을 확인하면 됩니다.

 

만일 view를 다음과 같이 수정한 후..(UNION ALL 을 추가)

CREATE OR REPLACE VIEW USER_INFO

(USER_SEQ, USER_ID, USER_NAME, USER_DESC, REG_DATE)

AS

SELECT user_seq,

          user_id,

          user_name,

          user_desc,

          reg_date

   FROM   scott.user_info

   UNION ALL

   SELECT empno AS user_seq,

          TO_CHAR (empno) AS user_id,

          ename AS user_name,

          job AS user_desc,

          hiredate AS reg_date

   FROM   scott.emp

/

 

아래 문장을 다시 실행하면,

SELECT *

FROM   user_updatable_columns

WHERE  table_name = 'USER_INFO'

 

UPDATABLE, INSERTABLE, DELETABLE 컬럼의 결과가 YES에서 NO로 바뀐 것을 확인할 수 있습니다.

'database' 카테고리의 다른 글

Database 버전 확인  (0) 2008.04.16
ORACLE에서 한글을 지원하는 캐릭터셋  (0) 2008.02.20
ORACLE dictionary (all_tab_cols)  (0) 2007.11.30
JEUS XAException발생시 처리방법  (0) 2007.11.20
ORACLE 캐릭터셋 변경  (0) 2007.02.27