Atitit.設計模式-----觸發器模式 trigger  詳解

来源:http://www.cnblogs.com/attilax/archive/2016/04/07/5365488.html
-Advertisement-
Play Games

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

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:[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

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前幾天做了一個文件替換功能用到些python os的功能,感覺python os模塊的功能非常的強大,如果你希望你的python程式能夠與平臺無關的話,這個模塊是尤為重要的。即它允許一個程式在編寫後不需要任何改動,也不會發生任何問題,就可以在Linux和 Windows下運行,看到這裡覺得pytho ...
  • 平時用$_post[''],$_get['']獲取表單中參數時會出現Notice: Undefined index: ; 雖然可以通過設置錯誤顯示方式來隱藏這個提示,但是這樣也有隱患,就是在伺服器的日誌中會記錄這些提示,導致日誌文件異常龐大。 通過在網上搜索和自己自身的實戰總結幾種解決方法; 方法1 ...
  • 上回寫了[使用Redis實現關註關係][1],這次說說使用Redis實現Timeline。 Timeline的實現一般有推模式、拉模式、推拉結合這幾種。 推模式:某人發佈內容之後推送給所有粉絲,空間換時間,瓶頸在寫入; 拉模式:粉絲從自己的關註列表中讀取內容,時間換空間,瓶頸在讀取; 推拉結合:某人 ...
  • 項目中經常會遇到單例的情況。大部分的單例代碼都差不多像這樣定義: internal class SingletonOne { private static SingletonOne _singleton; private SingletonOne() { } public static Single... ...
  • 在前段時間呢陸陸續續的更新了一系列關於重構的文章。在重構我們既有的代碼時,往往會用到設計模式。在之前重構系列的博客中,我們在重構時用到了“工廠模式”、“策略模式”、“狀態模式”等。當然在重構時,有的地方沒有點明使用的是那種設計模式。從今天開始,我們就圍繞著設計模式這個主題來討論一下我們常用的設計模式 ...
  • 一、應用背景 隨著計算技術的進步,記憶體、CPU、磁碟等資源不再是稀缺的,電腦作為應用程式的載體從單伺服器轉變為多伺服器,集中計算演化為分散式計算。原有的“巨石”應用難以適應業務的發展速度,可擴展、自適應的能力不足,程式員面對著數以萬計的源代碼文件抓耳撓腮(O M G!),越來越多的工程師渴望小而美 ...
  • 在面向對象的概念中,抽象類和介面都是一種特殊的類,它們具有一些共性,也有一些區別。 二者的相同點: 都屬於引用類型的數據,是一種特殊的類; 都不能實例化; 都可以包含未實現的方法聲明和屬性聲明; 兩者的派生類都必須實現它們的聲明,派生類實現抽象類的抽象屬性和抽象方法,而介面則要實現它的所有成員 二者 ...
  • atitit.atiHtmlUi web組件化方案與規範v1 1. 如何在現有html 標簽基礎上定義自己的組件1 2. 組件的構成與定義1 3. 組件的載入1 4. 組件css的載入2 5. 操作組件getVal,SetVal2 6. 組件化的本質目的並不一定是要為了可復用,而是提升可維護性。 不 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...