Oracle触发器案例代码:
View Code
CREATE OR REPLACE TRIGGER ISOK_UPDATE_HISTORY
BEFORE UPDATE
ON TECH_RTDB_POSITION_T
FOR EACH ROW
DECLARE
-- local variables here
t_WHMS VARCHAR2(1000); --位号的描述
t_ZZDM VARCHAR2(40); --装置代码
t_ZZMC VARCHAR2(200); --装置名称
t_DXZ VARCHAR2(200); --低限值
t_GXZ VARCHAR2(200); --高限值
t_D_DOWN VARCHAR2(200); --合理范围下限
t_D_UP VARCHAR2(200); --合理范围上限
t_DW VARCHAR2(40); --单位
t_ISUSE VARCHAR2(200); --是否启用
t_DESCRIPTION VARCHAR2(2000); --描述
BEGIN
IF :OLD.WHMS<>:NEW.WHMS THEN
t_WHMS:='位号名称更新为:'||:NEW.WHMS||';';
END IF;
IF :OLD.ZZDM<>:NEW.ZZDM THEN
t_ZZDM:='装置代码更新为:'||:NEW.ZZDM||';';
END IF;
IF :OLD.ZZMC<>:NEW.ZZMC THEN
t_ZZMC:='装置名称更新为:'||:NEW.ZZMC||';';
END IF;
IF :OLD.DXZ<>:NEW.DXZ THEN
t_DXZ:='低限值更新为:'||to_char(:NEW.DXZ)||';';
END IF;
IF :OLD.GXZ<>:NEW.GXZ THEN
t_GXZ:='高限值更新为:'||to_char(:NEW.GXZ)||';';
END IF;
IF :OLD.D_DOWN<>:NEW.D_DOWN THEN
t_D_DOWN:='合理范围下限更新为:'||to_char(:NEW.D_DOWN)||';';
END IF;
IF :OLD.D_UP<>:NEW.D_UP THEN
t_D_UP:='合理范围上限更新为:'||to_char(:NEW.D_UP)||';';
END IF;
IF :OLD.DW<>:NEW.DW THEN
t_DW:='单位更新为:'||:NEW.DW||';';
END IF;
IF :OLD.ISUSE<>:NEW.ISUSE THEN
t_ISUSE:='是否启用:'||to_char(:NEW.ISUSE)||';';
END IF;
t_DESCRIPTION:=t_WHMS||t_ZZDM||t_ZZMC||t_DXZ||t_GXZ||t_D_DOWN||t_D_UP||t_DW||t_ISUSE;
INSERT INTO HISTORY_TECH_RTDB_POSITION_T(HISTORY_ID,INFO_ID,DESCRIPTION)
VALUES(SEQ_HISTORY_ID.NEXTVAL,:OLD.BM,t_DESCRIPTION);
END;
CREATE OR REPLACE TRIGGER ISOK_UPDATE_HISTORY
BEFORE UPDATE
ON TECH_RTDB_POSITION_T
FOR EACH ROW
DECLARE
-- local variables here
t_WHMS VARCHAR2(1000); --位号的描述
t_ZZDM VARCHAR2(40); --装置代码
t_ZZMC VARCHAR2(200); --装置名称
t_DXZ VARCHAR2(200); --低限值
t_GXZ VARCHAR2(200); --高限值
t_D_DOWN VARCHAR2(200); --合理范围下限
t_D_UP VARCHAR2(200); --合理范围上限
t_DW VARCHAR2(40); --单位
t_ISUSE VARCHAR2(200); --是否启用
t_DESCRIPTION VARCHAR2(2000); --描述
BEGIN
IF :OLD.WHMS<>:NEW.WHMS THEN
t_WHMS:='位号名称更新为:'||:NEW.WHMS||';';
END IF;
IF :OLD.ZZDM<>:NEW.ZZDM THEN
t_ZZDM:='装置代码更新为:'||:NEW.ZZDM||';';
END IF;
IF :OLD.ZZMC<>:NEW.ZZMC THEN
t_ZZMC:='装置名称更新为:'||:NEW.ZZMC||';';
END IF;
IF :OLD.DXZ<>:NEW.DXZ THEN
t_DXZ:='低限值更新为:'||to_char(:NEW.DXZ)||';';
END IF;
IF :OLD.GXZ<>:NEW.GXZ THEN
t_GXZ:='高限值更新为:'||to_char(:NEW.GXZ)||';';
END IF;
IF :OLD.D_DOWN<>:NEW.D_DOWN THEN
t_D_DOWN:='合理范围下限更新为:'||to_char(:NEW.D_DOWN)||';';
END IF;
IF :OLD.D_UP<>:NEW.D_UP THEN
t_D_UP:='合理范围上限更新为:'||to_char(:NEW.D_UP)||';';
END IF;
IF :OLD.DW<>:NEW.DW THEN
t_DW:='单位更新为:'||:NEW.DW||';';
END IF;
IF :OLD.ISUSE<>:NEW.ISUSE THEN
t_ISUSE:='是否启用:'||to_char(:NEW.ISUSE)||';';
END IF;
t_DESCRIPTION:=t_WHMS||t_ZZDM||t_ZZMC||t_DXZ||t_GXZ||t_D_DOWN||t_D_UP||t_DW||t_ISUSE;
INSERT INTO HISTORY_TECH_RTDB_POSITION_T(HISTORY_ID,INFO_ID,DESCRIPTION)
VALUES(SEQ_HISTORY_ID.NEXTVAL,:OLD.BM,t_DESCRIPTION);
END;