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中用old和new表示执行前和执行后的数据。

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

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

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

OLD同时使用。

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

转载请注明来源: http://www.cnblogs.com/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

 

Atitit.设计模式-----触发器模式 trigger  详解的更多相关文章

  1. Java多线程编程中Future模式的详解

    Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Futu ...

  2. Java 反射 设计模式 动态代理机制详解 [ 转载 ]

    Java 反射 设计模式 动态代理机制详解 [ 转载 ] @author 亦山 原文链接:http://blog.csdn.net/luanlouis/article/details/24589193 ...

  3. Java多线程编程中Future模式的详解<转>

    Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Futu ...

  4. python设计模式之装饰器详解(三)

    python的装饰器使用是python语言一个非常重要的部分,装饰器是程序设计模式中装饰模式的具体化,python提供了特殊的语法糖可以非常方便的实现装饰模式. 系列文章 python设计模式之单例模 ...

  5. atitit.jQuery Validate验证框架详解与ati Validate 设计新特性

    atitit.jQuery Validate验证框架详解与ati Validate 设计新特性 1. AtiValidate的目标1 2. 默的认校验规则1 2.1. 使用方式 1.metadata用 ...

  6. 《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)

    1.简介 上一篇介绍了POM的基础理论知识和非POM方式写脚本,这篇介绍利用页面工厂类(page factory)去实现POM,通过查看PageFactory类,我们可以知道它是一个初始化一个页面实例 ...

  7. 《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)

    1.简介 上一篇宏哥用PageFactory实现了POM,宏哥再介绍一下如果不用PageFactory如何实现POM. 2.项目实战 在这里宏哥以百度首页登录的例子,如果用POM实现,在测试脚本中实际 ...

  8. mysql之触发器trigger 详解

    为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 mysql之触发器trigger 触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table)  ...

  9. ORACLE DB TRIGGER详解

    本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2. ...

随机推荐

  1. Learning Note: SQL Server VS Oracle–Database architecture

     http://www.sqlpanda.com/2013/07/learning-note-sql-server-vs.html This is my learning note base on t ...

  2. 用C#写个邮件监控服务(一)

    监控服务,首先当然是个服务了.至于什么是windows服务,这里就不多说了.正题 1. 创建服务项目 打开VS编程环境,在C#中创建windows服务项目 2.创建后属性中更改名称和服务名. 3.增加 ...

  3. 在XC2440上实现使用U盘自动更新系统的uboot

    转:http://blog.chinaunix.net/uid-22030783-id-3347599.html 此版本uboot在XC2440_uboot_V1.3版本上修改得来,是为我们的一个大客 ...

  4. java gzip压缩与解压

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  5. 在代码中加载storyBoard中的ViewController

    首先, 要在storyBoard中画出想要的VC, 然后建一个VC类和他关联.如图 : 调用时找如下写: DetailViewController *detailVC = [[UIStoryboard ...

  6. [Android Memory] Shallow Heap大小计算释疑

    转载自:http://blog.csdn.net/sodino/article/details/24186907 查看Mat文档时里面是这么描述Shallow Heap的:Shallow heap i ...

  7. 一、Instrument之Core Animation工具

    一.Instrument 三个方法: (1).按下Command + I打开Instrument; (2).Xcode->product->profile; (3).Xcode->O ...

  8. C++11常用特性的使用经验总结(转载)

    C++11已经出来很久了,网上也早有很多优秀的C++11新特性的总结文章,在编写本博客之前,博主在工作和学习中学到的关于C++11方面的知识,也得益于很多其他网友的总结.本博客文章是在学习的基础上,加 ...

  9. EasyUI-子页面增加显示tabs的一个问题

    在父页面点个链接能动态看到子页面的情况太简单,请看easyUI官网:http://www.jeasyui.com/tutorial/layout/tabs2.php现在说的是在子页面点个按钮也能触发增 ...

  10. C#/Sqlite-SQLite PetaPoco django 打造桌面程序

    为什么是 SQLite? 在以前的程序中, 我通常会使用 MySQL. 如果使用你程序的用户是一个软件小白, 而且远在另一个城市, 那么让她安装和部署 MySQL 将是一场噩梦: 她需要配置服务, 面 ...