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 |