使用 INSTEAD OF 触发器对视图进行更新

在创建一个或多个表之后(如下例中名为 deptemp 的表),然后又创建了基于 deptemp 的视图(如名为 manager_info 的视图)之后,使用 INSTEAD OF 触发器更新该视图。

以下 CREATE TRIGGER 语句创建 manager_info_update,这是一个 INSTEAD OF 触发器,用来通过 manager_info 视图更新 deptemp 表中的行。
CREATE TRIGGER manager_info_update
          INSTEAD OF UPDATE ON manager_info 
          REFERENCING NEW AS n 
          FOR EACH ROW 
          (EXECUTE PROCEDURE updtab (n.empno, n.empname, n.deptno,));
          
          CREATE PROCEDURE updtab (eno INT, ename CHAR(20), dno INT,)
          DEFINE deptcode INT;
          UPDATE dept SET manager_num = eno where deptno = dno;
          SELECT deptno INTO deptcode FROM emp WHERE empno = eno; 
          IF dno !=deptcode THEN
          UPDATE emp SET deptno = dno WHERE empno = eno;
          END IF;
          END PROCEDURE;
在创建了表、视图、触发器和 SPL 例程以后,数据库服务器将下面的 UPDATE 语句视作触发事件:
UPDATE manager_info
          SET empno = 3666, empname = "Steve"
          WHERE deptno = 01;

此触发 UPDATE 语句不会得到执行,但是此事件将造成执行触发器操作,即调用 updtab() SPL 例程。SPL 例程中的 UPDATE 语句将值更新到 manager_info 视图的 empdept 基本表中。