【发布时间】:2017-01-28 12:17:32
【问题描述】:
我已经阅读了 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:
有没有办法将此行插入两个表中?或者我可以选择要在哪个表中插入这个新行吗?
【问题讨论】:
-
必须使用“UNION”子句
-
@GurV 。 . .我更喜欢
cast(NULL as varchar2(255))或类似的东西。但它会创建一个具有字符数据类型的NULL值。是的,NULL可以有一个类型。 (当我尝试使用列中只有NULL的查询创建表时,我会定期提醒这一点。)
标签: sql oracle view union sql-insert