触发器SQL
CREATE
TRIGGER FUEL.HDGJcoaldayexpend1_insertTRIGGER AFTER
INSERT
ON
FUEL.coaldayexpend1 REFERENCING NEW AS new FOR EACH ROW MODE DB2SQL begin atomic declare expDate TIMESTAMP ; declare plantCode VARCHAR(32) ;
declare powerQuan DOUBLE ; declare heatQuan DOUBLE ; declare netQuan DOUBLE ;
declare beltQuan DOUBLE ; declare beltAdjustQuan DOUBLE ; declare powerExpQuan
DOUBLE ; declare heatExpQuan DOUBLE ; declare otherExpQuan DOUBLE ; declare
scheduleQuan DOUBLE ; declare remark VARCHAR(512); declare status VARCHAR(16) ;
declare operateDate TIMESTAMP ; declare operator VARCHAR(50) ; declare
expDateChar VARCHAR(32) ; declare operateDateChar VARCHAR(32) ; declare xml_id
BIGINT;
SET
( expDate,
plantCode,
powerQuan,
heatQuan,
netQuan,
beltQuan,
beltAdjustQuan,
powerExpQuan,
heatExpQuan,
otherExpQuan,
scheduleQuan,
remark,
status,
operateDate,
operator ) = ( new.expDate,
new.plantCode,
new.powerQuan,
new.heatQuan,
new.netQuan,
new.beltQuan,
new.beltAdjustQuan,
new.powerExpQuan,
new.heatExpQuan,
new.otherExpQuan,
new.scheduleQuan,
new.remark,
new.status,
new.operateDate,
new.operator );
if ( expDate IS null ) then
SET
expDateChar = '' ; else
SET
expDateChar = char(date(expDate)) ;
end if ; if ( plantCode IS null ) then
SET
plantCode = '' ; end if ; if ( remark IS null ) then
SET
remark = '' ; end if ; if ( status IS null ) then
SET
status = '' ; end if ; if ( operateDate IS null ) then
SET
operateDateChar = '' ; else
SET
operateDateChar = char(date(operateDate))||' '||char(time(operateDate));
end if ; if ( operator IS null ) then
SET
operator = '' ; end if ; if NOT exists(
SELECT
xml_id
FROM
fuel.jt_hdgj
WHERE
tablename = 'coaldayexpend1' AND
hdgj_id = char(new.id)) then INSERT
INTO platform.DATA_COALDAYEXPEND1(timemark,
itemid,
datadetail)
VALUES
(char(current date) || ' '||char( current time ),
plantCode,
'<CoalDayExpendLiang> <expDate>'||expDateChar||'</expDate>
<plantCode>'||plantCode||'</plantCode>
<powerQuan>'||fuel.doutochar(powerQuan)||'</powerQuan>
<heatQuan>'||fuel.doutochar(heatQuan)||'</heatQuan>
<netQuan>'||fuel.doutochar(netQuan)||'</netQuan>
<beltQuan>'||fuel.doutochar(beltQuan)||'</beltQuan>
<beltAdjustQuan>'||fuel.doutochar(beltAdjustQuan)||'</beltAdjustQuan>
<powerExpQuan>'||fuel.doutochar(powerExpQuan)||'</powerExpQuan>
<heatExpQuan>'||fuel.doutochar(heatExpQuan)||'</heatExpQuan>
<otherExpQuan>'||fuel.doutochar(otherExpQuan)||'</otherExpQuan>
<scheduleQuan>'||fuel.doutochar(scheduleQuan)||'</scheduleQuan>
<status>'||status||'</status> <remark>'||remark||'</remark>
<operateDate>'||operateDateChar||'</operateDate>
<operator>'||operator||'</operator> </CoalDayExpendLiang> ');
SET
(xml_id) = (
SELECT
identity_val_local()
FROM
sysibm.sysdummy1) ;
INSERT
INTO fuel.jt_hdgj(tablename,
xml_id,
hdgj_id)
VALUES
('coaldayexpend1',
xml_id,
to_char(new.id)); end if; if(exists(
SELECT
*
FROM
FUEL.PICOALPROCESSSTATUS
WHERE
TABLENAME='COALDAYEXPEND1' AND
PKID= new.id )) then
UPDATE
FUEL.PICOALPROCESSSTATUS
SET
LAST_UPDATE_DATE=new.LAST_UPDATE_DATE ,
PROCESSTIME=new.LAST_UPDATE_DATE
WHERE
TABLENAME='COALDAYEXPEND1' AND
PKID= new.id ; else
INSERT
INTO FUEL.PICOALPROCESSSTATUS (TABLENAME,
PKID,
PROCESS,
LAST_UPDATE_DATE,
PROCESSTIME)
VALUES
('COALDAYEXPEND1',
new.id,
'已处理',
new.LAST_UPDATE_DATE,
new.LAST_UPDATE_DATE); end if; END
触发器SQL的更多相关文章
- Oracle生成多表触发器sql
--将所有HY开头的表都生成一个更新触发器的脚本('/'是为了连续创建多个触发器而不报错)select 'CREATE OR REPLACE TRIGGER '||table_name||' BEFO ...
- SQL Server触发器
一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发 ...
- SQL Server DDL触发器运用
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) DDL运用场景(DDL Scene) ...
- SQL Server 触发器创建、删除、修改、查看示例
一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发 ...
- oracle PL/SQL(procedure language/SQL)程序设计之触发器(trigger)
创建触发器 触发器类似于过程和函数,都拥有声明.执行和异常处理过程的带名PL/SQL块.与包类似,触发器必须存储在数据库中.前面已经讲过,过程是显式地通过过程调用执行的,同时过程调用可以传递参数.与之 ...
- SQL Server 数据库DML触发器 【一】
今天学习SQL Server数据库中DML触发器(DDL触发器以后有时间继续学习). 当删除一条创建有触发器的表中的内容时,触发器执行SQL语句. 1.首相先创建一张表,表名称是 [Test] , 内 ...
- SQL Server 存储过程、触发器、游标
存储过程 1.存储过程是事先编好的.存储在数据库中的程序,这些程序用来完成对数据库的指定操作. 2.系统存储过程: SQL Server本身提供了一些存储过程,用于管理有关数据库和用户的信息. 用户存 ...
- SQL之trigger(触发器)
先来看一小段程序 有如下三张表: 帐户(编号,姓名,余额,建立日期,储蓄所编号) 储蓄所(编号,名称,地址,人数,所属城市) 借贷(帐户,借贷类型,金额,日期) create trigger tri_ ...
- SQL入门(3):定义约束/断言assertion/触发器trigger
本文介绍数据库的完整性 完整性控制程序: 指定规则,检查规则 (规则就是约束条件) 动态约束 intergrity constraint::=(O,P,A,R) O : 数据集合, 约束的对象 ?: ...
随机推荐
- Mac实用技巧之:访达/Finder
更多Mac实用技巧系列文章请访问我的博客:Mac实用技巧系列文章 Finder就相当于windows XP系统的『我的电脑』或win7/win10系统里的『计算机』(打开后叫资源管理器),find是查 ...
- rabbitmq高级消息队列
rabbitmq使用 什么是消息队列 消息(Message)是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串,也可以很复杂,可以包含嵌入对象. 消息队列是一种应用间的通信方式,消息发送后 ...
- 引用KBC.PetroSIM.Interop的dll,在代码中调用时出现 80040154 没有注册类 的错误
失败的尝试: regsvr32注册:模块已加载,但找不到入口点DllRegisterServer regasm注册:需写上regasm的完整路径,注册成功,但问题依旧 将项目的平台改为x86:问题依旧 ...
- SpringCloud-config分布式配置中心
为什么要统一管理微服务配置? 随着微服务不断的增多,每个微服务都有自己对应的配置文件.在研发过程中有测试环境.UAT环境.生产环境,因此每个微服务又对应至少三个不同环境的配置文件.这么多的配置文件,如 ...
- GZIP压缩与解压
public class GZIP { /** * 字符串的压缩 * * @param str * 待压缩的字符串 * @return 返回压缩后的字符串 * @throws IOException ...
- Python 经典面试题汇总之框架篇
前端和框架 1.谈谈你对http协议的认识 浏览器本质,socket客户端遵循Http协议 HTTP协议本质:通过\r\n分割的规范,请求响应之后断开链接 ==> 短连接.无状态 具体: Htt ...
- 第六篇Scrum冲刺博客
一.Daily Scrum Meeting照片 二.每个人的工作 成员 ItemID 已完成工作 明天计划完成的工作 遇到的困难 张鸿 o1 已完成工作,实现积分变换,碰撞检测 将其他剩余功能进行整合 ...
- asp.net动态添加控件学习
看了老师的教程后,自己一点感悟记录下来: 1.在页面提交后,动态生成的控件会丢失, 但如果生成控件的代码在pageload中,就可以,原理是每次生成页面都执行生成. 2.动态按件或页面原来控件, 在页 ...
- java8新特性-默认方法
作为一个java程序猿,经常会被问基础怎么样,对于这个问题,我理解的有两方面:一是对于java基础的理解和掌握,比如JDK的相关特性:二是工作的经历,毕竟,语言编程是一门实战性质的艺术,就算掌握了千万 ...
- The xp_cmdshell proxy account information cannot be retrieved or is invalid. Verify that the '##xp_cmdshell_proxy_account##' credential exists and contains valid information.
In one of our recent migrations, we got the following error when the client tried to fire xp_cmdshel ...