oracle的触发器执行插入
CREATE OR REPLACE TRIGGER tr_Msdata
--当插入数据的时候进行运算
BEFORE INSERT ON Ms_Realdata1 FOR EACH ROW
DECLARE
UA NUMBER(12,2); --A相电压
UB NUMBER(12,2); --B相电压
UC NUMBER(12,2); --C相电压
IA NUMBER(12,2); --A相电流
IB NUMBER(12,2); --B相电流
IC NUMBER(12,2); --C相电流
PFA1 NUMBER(12,2); --A相功率因素
PFB1 NUMBER(12,2); --B相功率因素
PFC1 NUMBER(12,2); --C相功率因素
BEGIN
IF inserting THEN
UA := :NEW.VOTAGEA;
UB := :NEW.VOTAGEB;
UC := :NEW.VOTAGEC;
IA := :new.Currenta;
IB := :new.Currentb;
IC := :new.Currentc;
PFA1 := :new.Pfa;
PFB1 := :new.Pfb;
PFC1 := :new.Pfc;
:new.activepowera := 1.732*UA*IA*PFA1;
:new.activepowerb := 1.732*UB*IB*PFB1;
:new.activepowerc := 1.732*UC*IC*PFC1;
:new.Reactivepowera := 1.732*UA*IA*SQRT(1-PFA1);
:new.Reactivepowerb := 1.732*UA*IA*SQRT(1-PFB1);
:new.Reactivepowerc := 1.732*UA*IA*SQRT(1-PFC1);
:new.Powertotal := :new.activepowera+:new.activepowerb+:new.activepowerc; --三相总功率=ABC三相有功功率之和
:new.Pftotal := :new.Powertotal/(:new.Reactivepowera+:new.Reactivepowerb+:new.Reactivepowerc+:new.Powertotal); --三相功率因素
END IF;
END;
下一篇: MySQL 触发器
推荐阅读
-
Oracle执行计划中的连接方式nested loops join、sort merge joinn、hash join
-
关于SQLServer2005的学习笔记多触发器执行问题
-
安装oracle11g INS-30131执行安装程序验证所需的初始设置失败的解决方法
-
Oracle 查看表存储过程触发器函数等对象定义语句的方法
-
Oracle 与 SQL Server的简单常用的插入语句的区别
-
MySQL中实现插入或更新操作(类似Oracle的merge语句)
-
C# Oracle批量插入数据进度条的实现代码
-
MySQL中实现插入或更新操作(类似Oracle的merge语句)
-
Oracle如何查看impdp正在执行的内容
-
C# Oracle批量插入数据进度条的实现代码