我有一个基本的疑问..我可以trigger
将insert
视图更改为新表吗?
例子
create or replace trigger iam_insert
instead of insert on test123
FOR EACH ROW
BEGIN
if inserting then
.
.
.
end if;
end;
问候
是的,这就是INSTEAD OF
视图的触发点。您可以将INSERT
针对复杂视图的操作转换为对基表(或视图甚至不引用的表)上的任何类型的 DML 操作。
但是,一般来说,很少会遇到INSTEAD OF
真正适合触发器的情况。它们当然存在,只是很少见。如果您尝试允许插入视图以将数据插入到视图的基表中,我将绝对确定您不能确保视图本身是保留键的,这将允许您对视图执行 DML无需定义触发器。
是的,INSTEAD OF 触发器就是为此而设计的。请注意,如果您在视图上定义 INSTEAD OF 触发器,然后在视图上执行数据操作(例如 INSERT),您的触发器将代替操作运行。Oracle 不会像没有触发器那样自动插入数据——这现在是您的责任。