2011-09-30 4 views
0

내가 만든보기를 만들었습니다. 읽기 전용읽기 전용이 아닌보기를 만드는 방법

 create view EMP_VU AS 
select ename employee_name, deptno, empno 
from emp 
with READ ONLY CONSTRAINT EMP_VU_Read_ONLY; 

어떻게 읽을 수 있습니까?

정보를보기에 삽입하려고 할 때이 오류가 발생하여 읽은 문제점 만 가정합니다.

 SQL> insert into EMP_VU (employee_n,deptno, empno) 
    values (Stutte, 40, 8888); 
    values (Stutte, 40, 8888) 
      * 
    ERROR at line 2: 
    ORA-00984: column not allowed here 
새로운 오류가 발생했습니다.

 SQL> insert into EMP_VU (employee_name, deptno, empno) 
    values ('Stuttle', '40', '8888'); 
    insert into EMP_VU (employee_name, deptno, empno) 
    * 
    ERROR at line 1: 
    ORA-00001: unique constraint (CIS605.EMP_EMPNO_PK) violated 

Heres the View

 SQL> select * from EMP_VU; 

EMPLOYEE_N  DEPTNO  EMPNO 
---------- ---------- ---------- 
KING    10  7839 
BLAKE    30  7698 
CLARK    10  7782 
JONES    20  7566 
MARTIN    30  7654 
ALLEN    30  7499 
TURNER    30  7844 
JAMES    30  7900 
WARD    30  7521 
FORD    20  7902 
SMITH    20  7369 

EMPLOYEE_N  DEPTNO  EMPNO 
---------- ---------- ---------- 
SCOTT    20  7788 
ADAMS    20  7876 
MILLER    10  7934 

14 rows selected. 
+0

보기에 여전히 삽입 할 수 있습니다. – Randy

+2

예, 읽기 전용으로보기를 사용하는 것이 좋습니다. 그러나 SQL Server에서는 View가 1 개의 테이블을 참조하는 경우에만 실제로 뷰에 데이터를 삽입 할 수 있습니다. 이것이 오라클의 경우인지 확실하지 않습니다. 어쨌든,이 경우의 문제는 "stutte"가 따옴표로 묶이지 않았기 때문에 문자열이 아니라 문자열이라고 생각하므로 "여기에서 허용되지 않는 열"오류가 발생합니다. –

+0

제 질문은 읽기 전용이 아닌 방법이었습니다. – Randy

답변

2

을 Heres보기. 이미 존재하는 기본 키로 데이터를 삽입하고 있습니다. 열쇠의 이름에서 직원 번호가 나와 있습니다.

즉, 기존 레코드와 동일한 사원 번호의 레코드를 삽입하지 마십시오.


는 또한 하나 개의 쿼리에서 당신이 직원 이름에 대한 문자열 aroudn 따옴표가없는 것으로 나타났습니다. 그리고 또 다른 경우에는 숫자 값을 따옴표로 묶어 놓았습니다.

각 열에 대한 데이터 유형을 식별하고 필요한 경우 따옴표 만 사용해야합니다. (문자열과 날짜, 숫자는 아님)

관련 문제