简单的触发器

create or replace trigger into_demandPlan_trigger
  after insert on I_WZ2SC_SHJHZWJ
  for each row
declare
  v_materielName   SCM_WZ_DemandPlan.Materielname%TYPE;
  v_plan_uuid      SCM_WZ_DemandPlan.Id%TYPE; --唯一编号
  v_sysdate        SCM_WZ_DemandPlan.Createddate%TYPE; --当前数据库时间
  v_plan_unitId    SCM_WZ_DemandPlan.Unitid%TYPE; --UnitId,按接收计量单位转换
逻辑转换 (采购单位流水)
  v_plan_storageId SCM_WZ_DemandPlan.storageId%TYPE; --ToStockId,以DHCK作为当
前公司下的业务组织获取业务组织Id作为到货仓库(到货仓库号)
begin
  v_materielName := materielName_function('SHTB', :new.CLBH);
  select sys_guid() into v_plan_uuid from dual; --自动产生Id
  select sysdate into v_sysdate from dual; --获取当前数据库时间
  v_plan_unitId    := unit_function(to_char(:new.CGDWLS),
                                    'SCM_WZ_UOM',
                                    'SHTB'); --UnitId,按接收计量单位转换逻辑
转换(采购单位流水number,packageCode,orgCode)
  v_plan_storageId := storage_function('SHTB', to_char(:new.DHCKH)); --
orgCode,bizOrgCode
  insert into SCM_WZ_DemandPlan
    (
     --唯一编号,公司,业务组织,数据状态,数据版本,
     id,
     orgCode,
     bizOrgCode,
     status,
     dataVersion,
     --创建公司,创建人(编制人员),建立时间DATE(编制时间),修改人(UPDATE_BY),修改
时间DATE(更新时间)
     createdOrgCode,
     creatorCode,
     createdDate,
     redactorCode,
     redateDate,
     --直送计划编号,供应商编号,预计送货日期,材料编号,托板数
     dDeliveryCode,
     vendorCode,
     deliverPlanDate,
     materielCode,
     palletQty,
     --数量,采购单位流水(UomDetailEntity unitId),平均量,到货区域,到货仓库号,
     deliverQty,
     Unitid,
     average,
     toStockArea,
     storageId,
     --收料单号,收料单从表流水,计划状态,MQ操作日期,MQ状态
     aSNCode,
     aSNDetailId,
     planStatus,
     mQRecordDate,
     mQStatus,
     --MQ数量,MQ流水号,接收状态,接收数量,执行单位
     mQCount,
     mQId,
     deliverStatus,
     deliverQuantity,
     impCompany,
     --材料名称
     materielName)
  values
    (
     --唯一编号,公司,业务组织,数据状态,数据版本,
     v_plan_uuid,
     'SHTB',
     null,
     '20',
     1,
     ----创建公司,创建人(编制人员),建立时间(编制时间 CHAR(14)),修改人
(UPDATE_BY),修改时间(更新时间 DATE)
     'SHTB',
     :new.BZRY,
     to_date(:new.BZSJ, 'YYYY/MM/DD'),
     :new.UPDATE_BY,
     :new.UPDATE_DATE,
     --直送计划编号,供应商编号,预计送货日期(CHAR(8)),材料编号,托板数
     :new.ZSJHBH,
     :new.GYSBH,
     to_date(:new.YJSHRQ, 'YYYY/MM/DD'),
     :new.CLBH,
     :new.TBS,
     --数量,采购单位流水(NUMBER(12)),平均量,到货区域String(NUMBER(12)),到货仓
库号,
     :new.SL,
     v_plan_unitId,
     :new.PJL,
     to_char(:new.DHQY),
     v_plan_storageId,
     --收料单号,收料单从表流水String(NUMBER(12)),计划状态(状态),MQ操作日期
(CHAR(4)没法转),MQ状态
     :new.SLDH,
     to_char(:new.SLCBLS),
     :new.ZT,
     to_date(:new.MQ_OP, 'YYYY'),
     :new.MQ_ST,
     --MQ数量String(NUMBER(12)),MQ流水号String(NUMBER(22)),接收状态,接收数量
String(NUMBER(12,5)),执行单位
     to_char(:new.MQ_COUNT),
     to_char(:new.MQ_LSH),
     :new.DELIVER_STATUS,
     to_char(:new.DELIVER_QUANTITY),
     :new.ZXDW,
     --材料名称
     v_materielName);
end;
这是用oracle10g中创建的触发器,大致就是在I_WZ2SC_SHJHZWJ表执行插入操作后,为
SCM_WZ_DemandPlan这个表中新增一条数据;这应该是简单的 触发器。
建立触发器的一般操作是用
create or replace trigger 触发器名
after insert on 表名//相应表上的操作
for each row 
declare //声明变量
 v_materielName   SCM_WZ_DemandPlan.Materielname%TYPE;//用%TYPE绑定表中的字段
,指定了变量具有与SCM_WZ_DemandPlan.Materielname中一样的字段类型。
begin
//所要进行的操作
end;
下面是sql server中的触发器
alter trigger trig_transinfo_insert 
on transinfo 
for insert,update 
as 
print '开始执行触发器------------------------------' 
print '临时表的内容::----------' 
select * from inserted 
print '-------------------' 
declare @type varchar(20) 
declare @transmoney money 
declare @cardid varchar(20) 
set @type=(select transtype from inserted ) 
set @transmoney=(select transmoney from inserted ) 
set @cardid=(select cardid from inserted ) 
print @type +'   <a href="mailto:" +@cardid"="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(1, 95, 145); text-decoration: none; ">'+@cardid 
if(@type='存入') 
begin 
update bank set currentmoney= 
currentmoney+@transmoney where  cardid=@cardid 
select * from bank 
end 
else 
begin 
update bank set currentmoney= 
currentmoney-@transmoney where  cardid=@cardid 
select * from bank 
end
update transinfo set transmoney=500 
where cardid='8505 001' and transtype='支取' 
print '触发器执行完毕' 
go 
从上可以看出两者的差别;对于变量的赋值有点区别之外,其他的语句基本上一致;
Quartz是一个强大的开源任务调度框架,它允许你在Java应用中设置定期执行的任务,包括发送电子邮件这样的操作。要使用Quartz的简单触发器(SimpleTrigger)定时发送邮件,你需要按照以下步骤进行: 1. **添加依赖**: 首先,在你的项目中引入Quartz库。如果你的项目是Maven项目,可以在pom.xml文件中添加如下依赖: ```xml <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>3.x.x</version> </dependency> ``` 2. **配置Job和Task**: 创建一个实现了`org.quartz.Job`接口的类,用于封装发送邮件的功能。例如: ```java public class MailJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { // 实现邮件发送逻辑,如使用JavaMail API sendEmail(); } } ``` 3. **创建Trigger**: 使用`org.quartz.SimpleTrigger`创建一个简单的定时触发器。比如,每小时执行一次: ```java SimpleTrigger trigger = new SimpleTrigger("mailTrigger", "defaultScheduler"); trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); // 或者设置具体的次数 trigger.setIntervalInMinutes(60); trigger.setTimeZone(TimeZone.getDefault()); ``` 4. **启动调度器**: 定义一个`SchedulerFactory`实例,并创建一个调度器`Scheduler`: ```java SchedulerFactory factory = new StdSchedulerFactory(); Scheduler scheduler = factory.getScheduler(); ``` 5. **添加并启动任务**: 将job和trigger添加到调度器,并启动它: ```java scheduler.scheduleJob(new JobDetail("mailJob", ...), trigger); try { scheduler.start(); } catch (SchedulerException e) { e.printStackTrace(); } ``` 6. **停止调度器**: 当不再需要定时发送邮件时,记得关闭调度器: ```java if (scheduler != null && !scheduler.isShutdown()) { scheduler.shutdown(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值