Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645
INSTEAD OF 触发器,也称替换触发器,是一种特殊的触发器,和其他建立在数据表上的触发器不同,INSTEAD OF 触发器建立在视图上。
在 Oracle 数据库中,复杂的视图常从多个数据表中获取数据有的视图还包含分组等计数函数,因此一般不允许对视图施加 DML操作,但是使用 INSTEAD OF 触发器,在触发器内通过定义的PL/SQL块,完成间接地对视图进行 DML操作。
下面就通过范例来学>INSTEAD OF 触发器的创建和使用。
在介绍 INSTEAD OF 触发器之前,首先创建一个视图,该视图关联数据表 emp 和 dept,代码如下所示。
CREATE VIEW test_view AS
SELECT empno,ename,dept.deptno,dname
FROM emp,dept
WHERE emp.deptno=dept.deptno;
由于 scott 用户没有创建视图的权限,因此首先应给该用户赋予创建视图的权限,如下所示。
CONN sys/change_on_install AS SYSDBA,GRANT CREATE VIEW to scott;
然后重新连接到 scott 用户下,创建前述视图。现在向该视图插入如下数据。
INSERT INTO temp_vieW VALUES(1234,’zhangsan