zoukankan      html  css  js  c++  java
  • Atitit.设计模式-----触发器模式 trigger  详解

    Atitit.设计模式-----触发器模式 trigger  详解

    1. 触发器概念1

    1.1. 触发器位置 after|before|instead of1

    2. 数据库里面的触发器1

    2.1. old:new1

    2.2. INSTEAD OF 触发器 after|before|instead of2

    3. 基于业务的 触发器2

    3.1. Trgger的定义 $trigger  $triggerPos2

    3.2. Trigger的使用3

    4. ref4

     

    1. 触发器概念

     

    1.1. 触发器位置 after|before|instead of

    业务模块里面的触发器,web url里面的before就是对req参数做操作。After是对rows做操作。

    2. 数据库里面的触发器

    2.1. old:new

    在Oracle中用:old:new表示执行前的行,和执行后的行。

    在MySQL中用oldnew表示执行前和执行后的数据。

     

     

    这样在技术上处理(NEW | OLD . column_name)新和旧

     

    的列名属于创建了过渡变量("transition variables")。

     

    对于INSERT语句,只有NEW是合法的;对于DELETE语句,只有OLD才合法;而UPDATE语句可以在和NEW以及

     

    OLD同时使用。

    作者::  ★(attilax)>>>   绰号:老哇的爪子  全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊  汉字名:艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

     

    2.2. INSTEAD OF 触发器 after|before|instead of

     

    INSTEAD OF 触发器用来代替通常的触发动作,即当对表进行INSERT、UPDATE 或 DELETE 操作时,系统不是直接对表执行这些操作,而是把操作内容交给触发器,让触发器检查所进行的操作是否正确。如正确才进行相应的操作。因此,INSTEAD OF 触发器的动作要早于表的约束处理。
     

    AFTER 触发器定义了对表执行了 INSERT、UPDATE 或 DELETE 语句操作之后再执行的操作。比如对某个表中的数据进行了更新操作后,要求立即对相关的表进行指定的操作,这时就可以采用 AFTER 触发器。AFTER 触发器只能在表上指定,且动作晚于约束处理

     

    3. 基于业务的 触发器

    3.1. Trgger的定义 $trigger  $triggerPos

    function btn_click()

    {

    var ds=new dataService();

    ds.merge_after_goto_url="../cust/goods/copy/list?envi=cp";

    ds.merge("$tb=wxb_good_copy&$trigger=com.attilax.dataService.meta_data_pars_from_txt_trigger&$trigtime=after");

    }

     

    public class meta_data_pars_from_txt_trigger extends Trigger {

     

    public static void main(String[] args) {

    // TODO Auto-generated method stub

     

    }

    public Object exec(Object object) {

    Map row=(Map) object;

    String txt= htmlx.html2txtV2( row.get("copy_content").toString());

    Map part = new RowParser().parse(txt);

    row.putAll(part);

    return null;

    // String txt=(String) object;

     

    }

     

    }

    3.2. Trigger的使用

     * DataService

     * @author Administrator

     *

     */

    public class UrlDsl2SqlStoreService

    Trigger trigr;

     

    if(req.getParameter("$trigger")!=null)   //p319

    {

    String tiggerName=req.getParameter("$trigger");

        Object trigger= IocXq214.getBean(tiggerName);

        this.trigr=(Trigger) trigger;

    }

     

     

     

    if(m.get("$trigger")!=null && m.get("$triggerPos").equals("after") )

    {

       Trigger o=  IocXq214.getBean(m.get("$trigger").toString());

       rows=  o.exec(rows);

    }

    return rows;

     

    }

    4. ref

    atitit...触发器机制 ltrigger mechanism sumup .的总结O8f - attilax的专栏 - 博客频道 - CSDN.NET.htm

     

  • 相关阅读:
    Druid 使用 Kafka 将数据载入到 Kafka
    Druid 使用 Kafka 数据加载教程——下载和启动 Kafka
    Druid 集群方式部署 —— 启动服务
    Druid 集群方式部署 —— 端口调整
    Druid 集群方式部署 —— 配置调整
    Druid 集群方式部署 —— 配置 Zookeeper 连接
    Druid 集群方式部署 —— 元数据和深度存储
    Druid 集群方式部署 —— 从独立服务器部署上合并到集群的硬件配置
    Druid 集群方式部署 —— 选择硬件
    Druid 独立服务器方式部署文档
  • 原文地址:https://www.cnblogs.com/attilax/p/5963394.html
Copyright © 2011-2022 走看看