达梦数据库不允许对复杂视图直接update、insert、delete(DML)操作,如果想实现此功能需要通过触发器实现。需要注意的是:使用instead of而不是before after创建触发器。
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操作是不允许的,因此建立触发器。
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;
update DMHR.VIEW_EMP set DEPARTMENT_NAME='临时部门'
where DEPARTMENT_ID=1105;
commit;
文章
阅读量
获赞