Sql 如何使视图不是只读的
我创建了一个只读的视图Sql 如何使视图不是只读的,sql,oracle,sqlplus,Sql,Oracle,Sqlplus,我创建了一个只读的视图 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
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
观点是这样的
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.
您的错误消息违反了主键。您正在插入已存在主键的数据。从钥匙的名称看,它是一个员工编号 简而言之,是否插入与任何现有记录具有相同员工编号的记录
我还注意到,在一个查询中,员工姓名的字符串周围没有引号。在另一个例子中,数值周围有引号
您需要标识每列的数据类型,并且只在需要的地方使用引号。(字符串和日期,但不是数字)您仍然可以插入到视图中。是的,我强烈建议视图仅用于阅读。但是,在SQL Server中,您实际上可以将数据插入视图中,但前提是视图引用1个表。不确定甲骨文的情况是否如此。无论如何,这个例子中的问题似乎是“stutte”没有用引号括起来,所以它认为它是一个列,而不是一个字符串,因此出现了错误“这里不允许列”。我的问题是如何使它不是只读的?ORA-00001:unique constraint(CIS605.EMP_EMPNO_PK)违反上面的是我现在得到的错误。我在stuttle周围加了引号,但现在我发现违反了ORA-00001:unique约束(CIS605.EMP\u EMPNO\u PK)