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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論