Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使视图不是只读的_Sql_Oracle_Sqlplus - Fatal编程技术网

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)