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 ...
Atitit.設計模式-----觸發器模式 trigger 詳解
1.1. 觸發器位置 after|before|instead of1
2.2. INSTEAD OF 觸發器 after|before|instead of2
3.1. Trgger的定義 $trigger $triggerPos2
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:[email protected]
轉載請註明來源: 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