뷰(view)를 통해서 제약조건을 줄 수가 있다. 단 반드시 옵션을 주어야한다.
[with check option] 옵션, 사용할지 말지 선택하는 옵션이다. 해당 옵션은 맨 뒤에 붙인다.
바로! 나갑니다ㅎㅎ
문제_
emp 테이블을 복사하여 미리 만들어 놓은 b_emp5 테이블을 이용 emp30(30번 부서만 가진) 뷰를 작성하여라.
단 뒤에 with check option을 부여해서 작성하시오. (모든 정보를 부여줄것 * )
해설_
~ with check option constraint 제약조건이름; <=양식
SQL> create or replace view emp30
2 as select * from b_emp5
3 where deptno=30
4 with check option constraint emp30_ck; //해당 구문때문에 제약조건이 적용이 되는것이다.
뷰가 생성되었습니다.
SQL> select * from emp30;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- -------- ---------- ----------
DEPTNO
----------
7499 ALLEN SALESMAN 7698 81/02/20 1600 300
30
7521 WARD SALESMAN 7698 81/02/22 1250 500
30
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400
30
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- -------- ---------- ----------
DEPTNO
----------
7698 BLAKE MANAGER 7839 81/05/01 2850
30
7844 TURNER SALESMAN 7698 81/09/08 1500 0
30
7900 JAMES CLERK 7698 81/12/03 950
30
6 개의 행이 선택되었습니다.
위와 같은경우 10,20번 부서가 해당이 안되기 때문에 10,20번 부서는 업데이트가 가능하나,
30번부서의 경우 수정이 불가 즉 업데이트가 불가하다.
그래서 우리는 이렇게 해볼수가 있다.
부서번호를 30번 으로 변경하는 SQL 작성?(수정이 되는지 확인)
먼저 존재 여부 확인
SQL> select empno from b_emp5 where empno=7566;
EMPNO
----------
7566
우선 존재한다는것을 확인 가능 그리고 갱신(업데이트)을 해본다면
SQL> update emp30
2 set deptno=30
3 where empno=7566;
0 행이 갱신되었습니다. //0행이 갱신되었다는것은 갱신이 되지 않았다는것을 의미한다.
즉 조건에 만족하는 30번부서의 데이터에 한해서 수정이 가능하다.
'Oracle > View' 카테고리의 다른 글
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 복합뷰 활용 4 (0) | 2019.07.02 |
---|---|
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 단순뷰 1편 (0) | 2019.07.02 |
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 복합뷰 활용 2 서브쿼리 (0) | 2019.07.02 |
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 복합뷰 활용 1 조인 (0) | 2019.07.02 |
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 단순뷰 & 그룹함수 (0) | 2019.07.02 |
댓글