gpt4 book ai didi

sql - 是否可以在从 2 个表创建的复杂 View 中插入新行?

转载 作者:行者123 更新时间:2023-12-04 18:25:19 27 4
gpt4 key购买 nike

我读过 Oracle Language Reference,没有关于这种情况的内容所以我们开始吧......

我从 2 个表中编写了一个复杂的 View :

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;

现在我尝试使用 View 插入一个新行:

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:

有什么办法可以将这一行插入到两个表中吗?或者我可以选择要插入这个新行的表吗?

最佳答案

不,是的。您不能直接插入到 View 中;它太复杂了。相反,您可以在 View 本身上创建一个“代替”触发器。

也就是说,您可以指定 View 更新时要执行的操作。从这里开始的一个地方是 Oracle documentation关于这个问题。

关于sql - 是否可以在从 2 个表创建的复杂 View 中插入新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41909693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com