업데이트 가능한 VIEW의 생성 조건
뷰의 데이터를 업데이트하려면 뷰가 업데이트할 수 있도록 정의되어야 한다.
다음의 조건을 만족한다면 해당 뷰는 업데이트할 수 있다.
- FROM 절은 반드시 하나의 테이블 또는 업데이트 가능한 뷰만 포함해야 한다.단, FROM (class_x, class_y)과 같이 괄호에 포함된 두 테이블은 하나의 테이블을 표현하므로 업데이트할 수 있다.
- DISTINCT, UNIQUE 구문을 포함하지 않는다.
- GROUP BY... HAVING 구문을 포함하지 않는다.
- SUM( ), AVG( )와 같은 집계 함수를 포함하지 않는다.
- UNION이 아닌 UNION ALL을 사용하여 업데이트 가능한 질의만으로 질의를 구성한 경우 업데이트할 수 있다. 단, 테이블은 UNION ALL을 구성하는 질의 중 어느 한 질의에만 존재해야 한다.
- UNION ALL 구문을 사용하여 생성된 뷰에 행을 입력하는 경우, 행이 입력될 테이블은 시스템이 결정한다. 행이 입력될 테이블을 사용자가 제어하는 것은 불가능하므로 사용자가 제어하기 원한다면 테이블에 직접 입력하거나 입력을 위한 별도의 뷰를 생성해야 한다.
뷰가 위의 규칙을 모두 충족하여 업데이트할 수 있어도, 해당 뷰의 각 컬럼이 업데이트 불가능할 수 있다. 다음과 같은 칼럼은 업데이트할 수 없다.
- 경로 표현식
- 산술 연산자가 포함된 숫자 타입의 컬럼
뷰에 정의된 컬럼이 업데이트 가능하더라도 FROM 구문에 포함된 테이블에 대해 업데이트를 위한 적절한 권한이 있어야 뷰를 수정할 수 있다. 또한 뷰에 대한 접근 권한이 있어야 한다. 뷰에 접근 권한을 부여하는 방법은 테이블에 접근 권한을 부여하는 방식과 동일하다. 권한 부여에 대한 자세한 내용은 권한 부여를 참조한다.