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

     

  • 相关阅读:
    金刚经与心经之比较
    ECMWF 和 GFS 模型
    LSTM之父Jürgen Schmidhuber评图灵
    STM32相关知识点
    最全C++11/14/17/20/23 的新特性代码案例
    C++ 在线工具
    如何在 Proteus 中设计 PCB
    STM32电源框图解析
    【新特性速递】填一个坑
    【新特性速递】表格加载速度足足 3 倍提升,爱了爱了
  • 原文地址:https://www.cnblogs.com/attilax/p/15198616.html
Copyright © 2011-2022 走看看