儲存過程和觸發器到底是個什麼玩意

2025-01-10 01:40:16 字數 5072 閱讀 3877

1樓:網友

儲存過程相當於打包好的sql語法,可以包含複雜的sql操作,在程式呼叫時只要執行該儲存過程,一句話就可以完成複雜的資料庫操作。

觸發器是也是打包好的sql語法,只不過執行它的條件是當被設定改觸發器的表有變化的時候。比如我可以寫乙個觸發器,設定它在插入一筆資料到這個表裡的時候,去同步另乙個表。那麼在程式裡我只要做到往資料庫裡插一筆資料,那麼另乙個表就可以同時被更新。

用儲存過程和資料庫的好處是,可以充分利用資料庫資源,減少程式**,程式設計師的工作將更簡便,寫出來的**也更簡潔明瞭。當然要真正明白程式在做什麼,還是要到儲存過程和觸發器裡面看明白。

呵呵,這些都是本人自身體會,你可以有選擇的看看。

2樓:網友

觸發器是一種特殊型別的儲存過程。主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。當對某一表進行諸如update、 insert、 delete 這些操作時,sql server 就會自動執行觸發器所定義的sql 語句,從而確保對資料的處理必須符合由這些sql 語句所定義的規則。

觸發器的主要作用就是其能夠實現由主鍵和外來鍵所不能保證的複雜的參照完整性和資料的一致性。除此之外,觸發器還有其它許多不同的功能:

1) 強化約束(enforce restriction)

觸發器能夠實現比check 語句更為複雜的約束。

2) 跟蹤變化auditing changes

觸發器可以偵測資料庫內的操作,從而不允許資料庫中未經許可的指定更新和變化。

3) 級聯執行(cascaded operation)。

觸發器可以偵測資料庫內的操作,並自動地級聯影響整個資料庫的各項內容。例如,某個表上的觸發器中包含有對另外乙個表的資料操作(如刪除,更新,插入)而該操作又導致該表上觸發器被觸發。

4) 儲存過程的呼叫(stored procedure invocation)。

為了響應資料庫更新觸,發器可以呼叫乙個或多個儲存過程,甚至可以通過外部過程的呼叫而在dbms( 資料庫管理系統)本身之外進行操作。

由此可見,觸發器可以解決高階形式的業務規則或複雜行為限制以及實現定製記錄等一些方面的問題。例如,觸發器能夠找出某一表在資料修改前後狀態發生的差異,並根據這種差異執行一定的處理。此外乙個表的同一型別(insert、 update、 delete)的多個觸發器能夠對同一種資料操作採取多種不同的處理。

總體而言,觸發器效能通常比較低。當執行觸發器時,系統處理的大部分時間花費在參照其它表的這一處理上,因為這些表既不在記憶體中也不在資料庫裝置上,而刪除表和插入表總是位於記憶體中。可見觸發器所參照的其它表的位置決定了操作要花費的時間長短。

儲存過程和觸發器的區別

3樓:惠企百科

一、參考不同。

1、儲存過程:是大型的sql語句集,用於在大型資料庫系統中完成特定的功能。

2、初始化:sqlserver提供給程式設計師和資料分析人員以確保資料初始化的一種方法。

二、特點不同。

1、儲存過程:儲存在資料庫中,編譯後永久有效,使用者通過指定儲存過程的名稱並指定引數(如果儲存過程具有引數)來執行。

2、insert:是與表事件相關的特殊儲存過程,程式的執行不被程式呼叫,也不是猛辯由程式手動啟動,而是由事件觸發,以便在操作表時(插入,刪除,更新))執行將被啟用。

三、作用不同。

1、儲存過程:以兩個遏制號(##開頭的官僚儲存過程,該儲存過程將成為儲存在tempdb資料庫中的臨時儲存過程,一旦建立了該臨時儲存過程,它將被連線到伺服器稍後。任何使用者都可以在沒有特殊許可權的情況下執行它。

2、設定為:可用於強制引用常量,在新增,更新或刪除多個表中的行時終止,保留這些表之間定義的關係。但是,強轎大制閉知豎引用替換的最佳方法是在相關表中定義主鍵和外來鍵約束。

儲存過程和觸發器的區別

4樓:網友

一、指代不同。

1、儲存過程:是在大型資料庫系統中,一組為了完成特定功能的sql 語句集。

2、觸發器:是sql server 提供給程式設計師和資料分析員來保證資料完整性的一種方法。

二、特點不同。

1、儲存過程:儲存在資料庫中,一次編譯後永久有效,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行。

2、觸發器:是與表事件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對乙個表進行操作( insert,delete, update)時就會啟用執行。

三、作用不同。

1、儲存過程:局時儲存過程,以兩個井字型大小(##)號開始,則該儲存過程將成為乙個儲存在tempdb資料庫中的全域性臨時儲存過程,全域性臨時儲存過程一旦建立,以後連線到伺服器的任意使用者都可以執行它,而且不需要特定的許可權。

5樓:

一、二者的概念不同。

1、儲存過程。

儲存過程(stored procedure)是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,它儲存在資料庫中,一次編譯後永久有效,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的乙個重要物件。

2、觸發器。

觸發器是一種特殊型別的儲存過程,它不同於我們前面介紹過的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。

二、二者的功能不同。

1、儲存過程的功能:

1) 變數說明。

2) ansi(美國國家標準化組織)相容的sql命令(如select,update….)

3) 一般流程式控制制命令(if…else…、while….)

2、觸發器的功能:

1) 強化約束(enforce restriction)

2) 跟蹤變化auditing changes

3) 級聯執行(cascaded operation)

三、二者的種類不同。

1、儲存過程種類:

1)本地儲存過程。

2) 臨時儲存過程。

3) 系統儲存過程。

2、觸發器種類:

1)after 觸發器和instead of 觸發器。

該型別觸發器要求只有執行某一操作(insert update delete) 之後,觸發器才被觸發,且只能在表上定義。可以為針對表的同一操作定義多個觸發器。

2) instead of觸發器表示並不執行其所定義的操作(insert、 update、 delete),而僅是執行觸發器本身,但對同一操作只能定義乙個instead of 觸發器。

6樓:匿名使用者

觸發器與儲存過程可以說是非常相似,可以說是一種變種的儲存過程,觸發器和儲存過程一樣都是sql語句集,通常通過建立觸發器來強制實現不同表中的邏輯相關資料的引用完整性和一致性。由於使用者不能繞過觸發器,所以可以用它來強制實施複雜的業務規則,以確保資料的完整性。觸發器不同於儲存過程,觸發器主要是通過事件執行觸發而被執行的,而儲存過程可以通過儲存過程名稱名字而直接呼叫。

當對某一表進行諸如update、insert、delete這些操作時,sqlserver就會自動執行觸發器所定義的sql語句,從而確保對資料的處理必須符合這些sql語句所定義的規則。

資料庫儲存過程、函式、觸發器的區別

7樓:網友

儲存過程和函式的區別:

1. 一般來說,儲存過程實現的功能要複雜一點,而函式的實現的功能針對性比較強。

2. 對於儲存過程來說可以返回引數,而函式只能返回值或者表物件。

3. 儲存過程一般是作為乙個獨立的部分來執行,而函式可以作為查詢語句的乙個部分來呼叫,由於函式可以返回乙個表物件,因此它可以在查詢語句中位於from關鍵字的後面。

4. 當儲存過程和函式被執行的時候,sql manager會到procedure cache中去取相應的查詢語句,如果在procedure cache裡沒有相應的查詢語句,sql manager就會對儲存過程和函式進行編譯。

procedure cache中儲存的是執行計劃 (execution plan) ,當編譯好之後就執行procedure cache中的execution plan,之後sql server會根據每個execution plan的實際情況來考慮是否要在cache中儲存這個plan,評判的標準乙個是這個execution plan可能被使用的頻率;其次是生成這個plan的代價,也就是編譯的耗時。儲存在cache中的plan在下次執行時就不用再編譯了。

觸發器、儲存過程和函式三者有何區別:

觸發器是特殊的儲存過程,儲存過程需要程式呼叫,而觸發器會自動執行;

在什麼時候用觸發器?要求系統根據某些操作自動完成相關任務。

什麼時候用儲存過程?

儲存過程就是程式,它是經過語法檢查和編譯的sql語句,所以執行特別快。

儲存過程和使用者自定義函式具體的區別。

先看定義: 儲存過程儲存過程可以使得對資料庫的管理、以及顯示關於資料庫及其使用者資訊的工作容易得多。儲存過程是 sql 語句和可選控制流語句的預編譯集合,以乙個名稱儲存並作為乙個單元處理。

儲存過程儲存在資料庫內,可由應用程式通過乙個呼叫執行,而且允許使用者宣告變數、有條件執行以及其它強大的程式設計功能。儲存過程可包含程式流、邏輯以及對資料庫的查詢。它們可以接受引數、輸出引數、返回單個或多個結果集以及返回值。

可以出於任何使用 sql 語句的目的來使用儲存過程,它具有以下優點: 可以在單個儲存過程中。

n個觸發器可以構成寄存

8樓:

你好,很高興為你服務,為你作出如下解答:n個觸發器可以構成暫存器,即把n個觸發器的輸出連線起來,在儲存乙個n位數的情況下,它就可以構成乙個n位暫存器。發生問題的原因:

1.由於觸發器的圓塌失效,導致暫存器出現故障。頌彎2.

由於暫存器結構設計問題,導致暫存器出現故障。3.由於電路接野腔悶口接觸不良,導致暫存器出現故障。

解決方法和做法步驟:1.檢測觸發器的輸入和輸出訊號,如果訊號不穩定,可以更換觸發器。

2.檢查暫存器結構,確保結構正確,以保證暫存器的正常功能。3.

檢查暫存器的介面,確保介面接觸良好,以保證暫存器的正常功能。相關知識:暫存器是一種由觸發器組成的儲存器,用於儲存乙個或多個位的資料。

它可以把乙個位的資料儲存在乙個觸發器中,或者把多個位的資料儲存在多個觸發器中,從而構成乙個暫存器。

資料庫中的儲存過程到底是什麼?能不能舉個詳細的例子

資料庫就是存放資料的乙個檔案。一般是分為兩種。一種就是單機的。就種就是網路的。單機的代表就是access的資料庫。檢視功能挺全的。而網路的就很多了。mysql.sql.oracle等等。一般現在都已經很少人使用單機的了。在資料庫中儲存的是什麼?資料庫是 按照資料結構來組織 儲存和管理資料的倉庫 是一...

快樂女聲到底是怎麼一個過程

從海選到10強都按照一定的賽制進行,終極pk通常照大眾評審來,10強之後會選出要力保的選手,然後事先安排好每一場要淘汰的選手,根據情況每一場賽制都會有所變化,以達到最終的目的,讓自己力保的選手進入3強,今年的劉惜君和鬱可唯就都是這樣輸給了賽制。300強到20強都是地方性的選,好像是300 60 20...

愛情到底是個什麼東西,愛情到底是個什麼東西呢?

真正的愛不是用言語可以表達的,是發自內心的,愛上一個人你的整顆心都會被你愛的人所吸引,為他 她 著迷,為他 她 牽掛,但願每一分鐘都可以見到他 她 見不到的時候時時刻刻都會想著他 她 見到的時候你會興奮,心跳加快,在一起的時候你會感覺很溫暖很安全,真正的愛一個人會心甘情願的照顧他 她 關懷他 她 給...