注册
达梦数据库中基于触发器的复杂视图更新
专栏/培训园地/ 文章详情 /

达梦数据库中基于触发器的复杂视图更新

苌弘 2024/04/25 988 3 0
摘要

达梦数据库中基于触发器的复杂视图更新

达梦数据库不允许对复杂视图直接update、insert、delete(DML)操作,如果想实现此功能需要通过触发器实现。需要注意的是:使用instead of而不是before after创建触发器。

1、创建两张表连接的复杂视图

CREATE OR REPLACE VIEW "DMHR"."VIEW_EMP"
AS
/<查询说明>/
SELECT
e.EMPLOYEE_ID,e.EMPLOYEE_NAME,d.DEPARTMENT_NAME,d.DEPARTMENT_ID
FROM
DMHR.employee e left join DMHR.department d on(d.DEPARTMENT_ID=E.DEPARTMENT_ID) ;
示例的复杂视图由DMHR.employee表和DMHR.department表左连接,取其中的用户ID、用户姓名、单位名称和单位ID。假如希望在此视图上通过单位ID改变单位名称。直接对复杂视图进行update操作是不允许的,因此建立触发器。

2、创建复杂视图的触发器

create trigger "DMHR"."TRI_VIEW"
instead of UPDATE on "DMHR"."VIEW_EMP"
referencing OLD ROW AS "OLD" NEW ROW AS "NEW"
for each row
BEGIN
/触发器体/
update DMHR.DEPARTMENT set DEPARTMENT_NAME=NEW.DEPARTMENT_NAME where
DEPARTMENT_ID=OLD.DEPARTMENT_ID;
END;

3、检验过程

update DMHR.VIEW_EMP set DEPARTMENT_NAME='临时部门'
where DEPARTMENT_ID=1105;
commit;

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服