我读过Oracle语言参考资料,这种情况没有任何意义所以我们在这里......
我从2个表中编写了一个复杂的视图:
CREATE OR REPLACE NOFORCE VIEW vw_emps_hist_50_b
AS
SELECT employee_id, first_name, last_name,
job_id, department_id
FROM employees_history
WHERE department_id = 50
UNION
SELECT employee_id, TO_CHAR(NULL), TO_CHAR(NULL),
job_id, department_id
FROM employees_history_2
WHERE department_id = 50
WITH CHECK OPTION;
现在我正在尝试使用视图插入新行:
INSERT INTO vw_emps_hist_50_b
VALUES (2005, 'Dexter', 'Morgan', 'ST_CLERK', 50);
Error que empieza en la línea: 46 del comando -
INSERT INTO vw_emps_hist_50_b
VALUES (2005, 'Dexter', 'Morgan', 'ST_CLERK', 50)
Error en la línea de comandos : 46 Columna : 13
Informe de error -
Error SQL: ORA-01732: data manipulation operation not legal on this view
01732. 00000 - "data manipulation operation not legal on this view"
*Cause:
*Action:
有没有办法将这一行插入两个表?或者我可以选择要插入此新行的表吗?
答案 0 :(得分:2)
不,是的。您无法直接插入视图;太复杂了。相反,您可以在视图本身上创建“代替”触发器。
也就是说,您可以指定更新视图时要执行的操作。一个开始的地方是关于这个主题的Oracle documentation。
答案 1 :(得分:1)
执行的操作违反了策略,因为视图派生自多个表,并且您正在该视图上尝试插入操作。