2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、SQLSQL觸發(fā)器使用教程和命名規(guī)范觸發(fā)器使用教程和命名規(guī)范1,觸發(fā)器簡介,觸發(fā)器簡介觸發(fā)器(Trigger)是數(shù)據(jù)庫對象的一種,編碼方式類似存儲過程,與某張表(Table)相關(guān)聯(lián),當(dāng)有DML語句對表進行操作時,可以引起觸發(fā)器的執(zhí)行,達到對插入記錄一致性,正確性和規(guī)范性控制的目的。在當(dāng)年CS時代盛行的時候,由于客戶端直接連接數(shù)據(jù)庫,能保證數(shù)據(jù)庫一致性的只有數(shù)據(jù)庫本身,此時主鍵(PrimaryKey),外鍵(FeignKey),約束(Co

2、nstraint)和觸發(fā)器成為必要的控制機制。而觸發(fā)器的實現(xiàn)比較靈活,可編程性強,自然成為了最流行的控制機制。到了BS時代,發(fā)展成4層架構(gòu),客戶端不再能直接訪問數(shù)據(jù)庫,只有中間件才可以訪問數(shù)據(jù)庫。要控制數(shù)據(jù)庫的一致性,既可以在中間件里控制,也可以在數(shù)據(jù)庫端控制。很多的青睞Java的開發(fā)者,隨之將數(shù)據(jù)庫當(dāng)成一個黑盒,把大多數(shù)的數(shù)據(jù)控制工作放在了Servlet中執(zhí)行。這樣做,不需要了解太多的數(shù)據(jù)庫知識,也減少了數(shù)據(jù)庫編程的復(fù)雜性,但同時增加

3、了Servlet編程的工作量。從架構(gòu)設(shè)計來看,中間件的功能是檢查業(yè)務(wù)正確性和執(zhí)行業(yè)務(wù)邏輯,如果把數(shù)據(jù)的一致性檢查放到中間件去做,需要在所有涉及到數(shù)據(jù)寫入的地方進行數(shù)據(jù)一致性檢查。由于數(shù)據(jù)庫訪問相對于中間件來說是遠程調(diào)用,要編寫統(tǒng)一的數(shù)據(jù)一致性檢查代碼并非易事,一般采用在多個地方的增加類似的檢查步驟。一旦一致性檢查過程發(fā)生調(diào)整,勢必導(dǎo)致多個地方的修改,不僅增加工作量,而且無法保證每個檢查步驟的正確性。觸發(fā)器的應(yīng)用,應(yīng)該放在關(guān)鍵的,多方發(fā)起

4、的,高頻訪問的數(shù)據(jù)表上,過多使用觸發(fā)器,會增加數(shù)據(jù)庫負擔(dān),降低數(shù)據(jù)庫性能。而放棄使用觸發(fā)器,則會導(dǎo)致系統(tǒng)架構(gòu)設(shè)計上的問題,影響系統(tǒng)的穩(wěn)定性。2,觸發(fā)器示例,觸發(fā)器示例觸發(fā)器代碼類似存儲過程,以PLSQL腳本編寫。下面是一個觸發(fā)器的示例:新建員工工資表salarycreatetableSALARY(EMPLOYEE_IDNUMBER員工IDMONTHVAR2(6)工資月份AMOUNTNUMBER工資金額)創(chuàng)建與salary關(guān)聯(lián)的觸發(fā)器sa

5、lary_trg_rai1Createreplacetriggersalary_trg_rai2Afteronsalary3Feachrow觸發(fā)器的語法如下CREATEREPLACETRIGGERtrigger_nameONtable_name[FEACHROW]WHEN(condition)DECLAREBEGIN觸發(fā)器代碼ENDTrigger_name是觸發(fā)器的名稱。可以選擇befe或者after或insteadof。Befe表示在

6、DML語句實施前執(zhí)行觸發(fā)器,而after表示在在dml語句實施之后執(zhí)行觸發(fā)器,insteadof觸發(fā)器用在對視圖的更新上。可以選擇一個或多個DML語句,如果選擇多個,則用分開,如:update。Table_name是觸發(fā)器關(guān)聯(lián)的表名。[FEACHROW]為可選項,如果注明了FEACHROW,則說明了該觸發(fā)器是一個行級的觸發(fā)器,DML語句處理每條記錄都會執(zhí)行觸發(fā)器;否則是一個語句級的觸發(fā)器,每個DML語句觸發(fā)一次。WHEN后跟的condi

7、tion是觸發(fā)器的響應(yīng)條件,只對行級觸發(fā)器有效只對行級觸發(fā)器有效,當(dāng)操作的記錄滿足condition時,觸發(fā)器才被執(zhí)行,否則不執(zhí)行。Condition中可以通過new對象和old對象(注意區(qū)別于前面的:new和:old,在代碼中引用需要加上冒號)來引用操作的記錄。觸發(fā)器代碼可以包括三種類型:未涉及數(shù)據(jù)庫事務(wù)代碼,涉及關(guān)聯(lián)表(上文語法中的table_name)數(shù)據(jù)庫事務(wù)代碼,涉及除關(guān)聯(lián)表之外數(shù)據(jù)庫事務(wù)代碼。其中第一種類型代碼只對數(shù)據(jù)進行簡

8、單運算和判斷,沒有DML語句,這種類型代碼可以在所有的觸發(fā)器中執(zhí)行。第二種類型代碼涉及到對關(guān)聯(lián)表的數(shù)據(jù)操作,比如查詢關(guān)聯(lián)表的總記錄數(shù)或者往關(guān)聯(lián)表中插入一條記錄,該類型代碼只能在語句級觸發(fā)器中使用只能在語句級觸發(fā)器中使用,如果在行級觸發(fā)器中使用,將會報A04091錯誤。第三種類型代碼涉及到除關(guān)聯(lián)表之外的數(shù)據(jù)庫事務(wù),這種代碼可以在所有觸發(fā)器中使用。從觸發(fā)器的功能上來看,可以分成3類:?重寫列(僅限于befe觸發(fā)器)?采取行動(任何觸發(fā)器)?

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論