版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SQLSQL觸發(fā)器使用教程和命名規(guī)范觸發(fā)器使用教程和命名規(guī)范1,觸發(fā)器簡(jiǎn)介,觸發(fā)器簡(jiǎn)介觸發(fā)器(Trigger)是數(shù)據(jù)庫(kù)對(duì)象的一種,編碼方式類似存儲(chǔ)過(guò)程,與某張表(Table)相關(guān)聯(lián),當(dāng)有DML語(yǔ)句對(duì)表進(jìn)行操作時(shí),可以引起觸發(fā)器的執(zhí)行,達(dá)到對(duì)插入記錄一致性,正確性和規(guī)范性控制的目的。在當(dāng)年CS時(shí)代盛行的時(shí)候,由于客戶端直接連接數(shù)據(jù)庫(kù),能保證數(shù)據(jù)庫(kù)一致性的只有數(shù)據(jù)庫(kù)本身,此時(shí)主鍵(PrimaryKey),外鍵(FeignKey),約束(Co
2、nstraint)和觸發(fā)器成為必要的控制機(jī)制。而觸發(fā)器的實(shí)現(xiàn)比較靈活,可編程性強(qiáng),自然成為了最流行的控制機(jī)制。到了BS時(shí)代,發(fā)展成4層架構(gòu),客戶端不再能直接訪問(wèn)數(shù)據(jù)庫(kù),只有中間件才可以訪問(wèn)數(shù)據(jù)庫(kù)。要控制數(shù)據(jù)庫(kù)的一致性,既可以在中間件里控制,也可以在數(shù)據(jù)庫(kù)端控制。很多的青睞Java的開(kāi)發(fā)者,隨之將數(shù)據(jù)庫(kù)當(dāng)成一個(gè)黑盒,把大多數(shù)的數(shù)據(jù)控制工作放在了Servlet中執(zhí)行。這樣做,不需要了解太多的數(shù)據(jù)庫(kù)知識(shí),也減少了數(shù)據(jù)庫(kù)編程的復(fù)雜性,但同時(shí)增加
3、了Servlet編程的工作量。從架構(gòu)設(shè)計(jì)來(lái)看,中間件的功能是檢查業(yè)務(wù)正確性和執(zhí)行業(yè)務(wù)邏輯,如果把數(shù)據(jù)的一致性檢查放到中間件去做,需要在所有涉及到數(shù)據(jù)寫入的地方進(jìn)行數(shù)據(jù)一致性檢查。由于數(shù)據(jù)庫(kù)訪問(wèn)相對(duì)于中間件來(lái)說(shuō)是遠(yuǎn)程調(diào)用,要編寫統(tǒng)一的數(shù)據(jù)一致性檢查代碼并非易事,一般采用在多個(gè)地方的增加類似的檢查步驟。一旦一致性檢查過(guò)程發(fā)生調(diào)整,勢(shì)必導(dǎo)致多個(gè)地方的修改,不僅增加工作量,而且無(wú)法保證每個(gè)檢查步驟的正確性。觸發(fā)器的應(yīng)用,應(yīng)該放在關(guān)鍵的,多方發(fā)起
4、的,高頻訪問(wèn)的數(shù)據(jù)表上,過(guò)多使用觸發(fā)器,會(huì)增加數(shù)據(jù)庫(kù)負(fù)擔(dān),降低數(shù)據(jù)庫(kù)性能。而放棄使用觸發(fā)器,則會(huì)導(dǎo)致系統(tǒng)架構(gòu)設(shè)計(jì)上的問(wèn)題,影響系統(tǒng)的穩(wěn)定性。2,觸發(fā)器示例,觸發(fā)器示例觸發(fā)器代碼類似存儲(chǔ)過(guò)程,以PLSQL腳本編寫。下面是一個(gè)觸發(fā)器的示例:新建員工工資表salarycreatetableSALARY(EMPLOYEE_IDNUMBER員工IDMONTHVAR2(6)工資月份AMOUNTNUMBER工資金額)創(chuàng)建與salary關(guān)聯(lián)的觸發(fā)器sa
5、lary_trg_rai1Createreplacetriggersalary_trg_rai2Afteronsalary3Feachrow觸發(fā)器的語(yǔ)法如下CREATEREPLACETRIGGERtrigger_nameONtable_name[FEACHROW]WHEN(condition)DECLAREBEGIN觸發(fā)器代碼ENDTrigger_name是觸發(fā)器的名稱??梢赃x擇befe或者after或insteadof。Befe表示在
6、DML語(yǔ)句實(shí)施前執(zhí)行觸發(fā)器,而after表示在在dml語(yǔ)句實(shí)施之后執(zhí)行觸發(fā)器,insteadof觸發(fā)器用在對(duì)視圖的更新上。可以選擇一個(gè)或多個(gè)DML語(yǔ)句,如果選擇多個(gè),則用分開(kāi),如:update。Table_name是觸發(fā)器關(guān)聯(lián)的表名。[FEACHROW]為可選項(xiàng),如果注明了FEACHROW,則說(shuō)明了該觸發(fā)器是一個(gè)行級(jí)的觸發(fā)器,DML語(yǔ)句處理每條記錄都會(huì)執(zhí)行觸發(fā)器;否則是一個(gè)語(yǔ)句級(jí)的觸發(fā)器,每個(gè)DML語(yǔ)句觸發(fā)一次。WHEN后跟的condi
7、tion是觸發(fā)器的響應(yīng)條件,只對(duì)行級(jí)觸發(fā)器有效只對(duì)行級(jí)觸發(fā)器有效,當(dāng)操作的記錄滿足condition時(shí),觸發(fā)器才被執(zhí)行,否則不執(zhí)行。Condition中可以通過(guò)new對(duì)象和old對(duì)象(注意區(qū)別于前面的:new和:old,在代碼中引用需要加上冒號(hào))來(lái)引用操作的記錄。觸發(fā)器代碼可以包括三種類型:未涉及數(shù)據(jù)庫(kù)事務(wù)代碼,涉及關(guān)聯(lián)表(上文語(yǔ)法中的table_name)數(shù)據(jù)庫(kù)事務(wù)代碼,涉及除關(guān)聯(lián)表之外數(shù)據(jù)庫(kù)事務(wù)代碼。其中第一種類型代碼只對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)
8、單運(yùn)算和判斷,沒(méi)有DML語(yǔ)句,這種類型代碼可以在所有的觸發(fā)器中執(zhí)行。第二種類型代碼涉及到對(duì)關(guān)聯(lián)表的數(shù)據(jù)操作,比如查詢關(guān)聯(lián)表的總記錄數(shù)或者往關(guān)聯(lián)表中插入一條記錄,該類型代碼只能在語(yǔ)句級(jí)觸發(fā)器中使用只能在語(yǔ)句級(jí)觸發(fā)器中使用,如果在行級(jí)觸發(fā)器中使用,將會(huì)報(bào)A04091錯(cuò)誤。第三種類型代碼涉及到除關(guān)聯(lián)表之外的數(shù)據(jù)庫(kù)事務(wù),這種代碼可以在所有觸發(fā)器中使用。從觸發(fā)器的功能上來(lái)看,可以分成3類:?重寫列(僅限于befe觸發(fā)器)?采取行動(dòng)(任何觸發(fā)器)?
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- sql server 2000中的觸發(fā)器使用(good)文庫(kù)
- sql觸發(fā)器的使用及語(yǔ)法
- sql觸發(fā)器實(shí)例
- sql server 2000觸發(fā)器
- nzk系列可控硅觸發(fā)器使用手冊(cè)
- sql中如何創(chuàng)建觸發(fā)器
- 基本rs觸發(fā)器和d觸發(fā)器
- sql 2005 的存儲(chǔ)過(guò)程和觸發(fā)器調(diào)試大法(原創(chuàng))
- sql server2008觸發(fā)器學(xué)習(xí)筆記
- sqlserver觸發(fā)器的使用
- sql server存儲(chǔ)過(guò)程和觸發(fā)器操作實(shí)訓(xùn)講義
- sql server 2005 學(xué)習(xí)筆記之觸發(fā)器簡(jiǎn)介
- 通過(guò)觸發(fā)器跟蹤對(duì)表的修改sql語(yǔ)句
- sql觸發(fā)器全過(guò)程(含實(shí)例講解)
- sql server2008觸發(fā)器練習(xí)題
- 實(shí)驗(yàn)六 rs觸發(fā)器和d觸發(fā)器
- 觸發(fā)器的創(chuàng)建和使用
- sql server觸發(fā)器存入遠(yuǎn)程數(shù)據(jù)庫(kù)
- oracle觸發(fā)器的創(chuàng)建及使用!!
- 實(shí)驗(yàn)四 基本rs觸發(fā)器和d觸發(fā)器2
評(píng)論
0/150
提交評(píng)論