SQL 11-6. DML 작업 거부
관련링크
본문
① WITH READ ONLY -- MSSQL에서는 지원되지 않는 기능
․ 뷰 정의에 WITH READ ONLY 옵션을 추가하면 DML작업을 거부할 수 있다.
․ 뷰를 통해 행에 DML작업을 수행하면 SQL server 오류가 발생한다.
예제)
오라클 디비 예제 : CREATE OR REPLACE VIEW empvu10
(employee_number, employee_name, job_title)
AS SELECT employee_id, last_name, job_id
FROM employees
WHERE department_id = 10
WITH READ ONLY;
View created.
☞설명) DML 작업 거부
예제는 뷰를 통해 DML작업이 수행되지 않도록 EMPVU10 뷰를 수정합니다.
읽기 전용 제약 조건이 있는 뷰에서 행을 제거하려고 하면 오류가 발생합니다.
DELETE FROM empvu10
WHERE employee_number = 200;
DELETE FROM empvu10
MSSQL 디비 예제 :
select a.lname, a.job_lvl, a.pub_id, b.maxsal
FROM employee a, (SELECT pub_id, MAX(job_lvl) maxsal
FROM employee
GROUP BY pub_id) b
WHERE a.pub_id=b.pub_id
AND a.job_lvl < maxsal
*
ERROR at line 1 :
ORA-01752 : cannot delete from view without exactly one key-preserved table
읽기 전용 제약 조건이 있는 뷰를 사용하여 행을 삽입하거나 수정하려고 하면 다음 Oracle server 오류가 발생한다.
01733 : virtual column not allowed here.