视图v_emp_dept是连接员工表emp 和部门表dept生成的,现在创建一个替代触发器如下:
SQL> create or replace trigger tr_v_e_d
2 instead of insert on v_emp_dept
3 for each row
4 begin
5 insert into dept(deptno,dname) values(:new.deptno,:new.dname);
6 insert into emp(empno,ename,deptno) values(:new.empno,:new.ename,:new.deptn
o);
7 end;
8 /触发器已创建,这一步没有问题,可是接下来往视图中插入数据的时候出错了:
insert into v_emp_dept values ('456','Jack','30','SALES');
ERROR 位于第 1 行:
ORA-00001: 违反唯一约束条件 (SCOTT.PK_DEPT)ORA-06512: 在"SCOTT.TR_V_E_D", line 2
ORA-04088: 触发器 'SCOTT.TR_V_E_D' 执行过程中出错
我想:出错的原因可能是因为部门编号30,部门名称为SALES的记录已经在dept表中存在了。
所以就换了一条插入数据:SQL> insert into v_emp_dept values ('456','Jack','90','Management');
可是,还是出错了,错误提示如下:
ERROR 位于第 1 行:
ORA-00001: 违反唯一约束条件 (SCOTT.PK_EMP)ORA-06512: 在"SCOTT.INSERT_DEPT", line 2
ORA-04088: 触发器 'SCOTT.INSERT_DEPT' 执行过程中出错
ORA-06512: 在"SCOTT.TR_V_E_D", line 2
ORA-04088: 触发器 'SCOTT.TR_V_E_D' 执行过程中出错
但是,插入数据前,编号为456的员工Jack根本就没在emp表中,编号为90的部门Management也没在dept表中。
怎么会出现违反唯一约束条件的错误呢???
请各位大虾帮我看看,谢谢~~~
SQL> create or replace trigger tr_v_e_d
2 instead of insert on v_emp_dept
3 for each row
4 begin
5 insert into dept(deptno,dname) values(:new.deptno,:new.dname);
6 insert into emp(empno,ename,deptno) values(:new.empno,:new.ename,:new.deptn
o);
7 end;
8 /触发器已创建,这一步没有问题,可是接下来往视图中插入数据的时候出错了:
insert into v_emp_dept values ('456','Jack','30','SALES');
ERROR 位于第 1 行:
ORA-00001: 违反唯一约束条件 (SCOTT.PK_DEPT)ORA-06512: 在"SCOTT.TR_V_E_D", line 2
ORA-04088: 触发器 'SCOTT.TR_V_E_D' 执行过程中出错
我想:出错的原因可能是因为部门编号30,部门名称为SALES的记录已经在dept表中存在了。
所以就换了一条插入数据:SQL> insert into v_emp_dept values ('456','Jack','90','Management');
可是,还是出错了,错误提示如下:
ERROR 位于第 1 行:
ORA-00001: 违反唯一约束条件 (SCOTT.PK_EMP)ORA-06512: 在"SCOTT.INSERT_DEPT", line 2
ORA-04088: 触发器 'SCOTT.INSERT_DEPT' 执行过程中出错
ORA-06512: 在"SCOTT.TR_V_E_D", line 2
ORA-04088: 触发器 'SCOTT.TR_V_E_D' 执行过程中出错
但是,插入数据前,编号为456的员工Jack根本就没在emp表中,编号为90的部门Management也没在dept表中。
怎么会出现违反唯一约束条件的错误呢???
请各位大虾帮我看看,谢谢~~~
你的本意是?