儲存過程與觸發器的含義及區別

2021-06-09 17:57:06 字數 1003 閱讀 8827

儲存過程

是 sql 語句和可選控制流語句的預編譯集合,以乙個名稱儲存並作為乙個單元處理。儲存過程儲存在資料庫內,可由應用程式通過乙個呼叫執行,而且允許使用者宣告變數、有條件執行以及其它強大的程式設計功能。

儲存過程可包含程式流、邏輯以及對資料庫的查詢。它們可以接受引數、輸出引數、返回單個或多個結果集以及返回值。

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

可以在單個儲存過程中執行一系列 sql 語句。

可以從自己的儲存過程內引用其它儲存過程,這可以簡化一系列複雜語句。

儲存過程在建立時即在伺服器上進行編譯,所以執行起來比單個 sql 語句快。

觸發器是一種特殊型別的儲存過程,當使用下面的一種或多種資料修改操作在指定表中對資料進行修改時,觸發器會生效:update、insert 或 delete。觸發器可以查詢其它表,而且可以包含複雜的 sql 語句。它們主要用於強制複雜的業務規則或要求。例如,可以控制是否允許基於顧客的當前帳戶狀態插入定單。

觸發器還有助於強制引用完整性,以便在新增、更新或刪除表中的行時保留表之間已定義的關係。然而,強制引用完整性的最好方法是在相關表中定義主鍵和外來鍵約束。如果使用資料庫關係圖,則可以在表之間建立關係以自動建立外來鍵約束。有關詳細資訊,請參見表關係。

使用觸發器的優點

觸發器的優點如下:

觸發器是自動的:它們在對錶的資料作了任何修改(比如手工輸入或者應用程式採取的操作)之後立即被啟用。

觸發器可以通過資料庫中的相關表進行層疊更改。例如,可以在 titles 表的 title_id 列上寫入乙個刪除觸發器,以使其它表中的各匹配行採取刪除操作。該觸發器用 title_id 列作為唯一鍵,在 titleauthor、sales 及 roysched 表中對各匹配行進行定位。

觸發器可以強制限制,這些限制比用 check 約束所定義的更複雜。與 check 約束不同的是,觸發器可以引用其它表中的列。例如,觸發器可以回滾試圖對**低於 10 美元的書(儲存在 titles 表中)應用折扣(儲存在 discounts 表中)的更新。

儲存過程與觸發器的區別

觸發器原理 觸發器與儲存過程非常相似,觸發器也是sql語句集,兩者唯一的區別是觸發器不能用execute語句呼叫,而是在使用者執行transact sql語句時自動觸發 啟用 執行。觸發器是在乙個修改了指定表中的資料時執行的儲存過程。通常通過建立觸發器來強制實現不同表中的邏輯相關資料的引用完整性和一...

觸發器與儲存過程的區別

觸發器原理 觸發器與儲存過程非常相似,觸發器也是sql語句集,兩者唯一的區別是觸發器不能用execute語句呼叫,而是在使用者執行transact sql語句時自動觸發 啟用 執行。觸發器是在乙個修改了指定表中的資料時執行的儲存過程。通常通過建立觸發器來強制實現不同表中的邏輯相關資料的引用完整性和一...

儲存過程及觸發器

了解儲存過程的概念 優點 熟練掌握建立儲存過程的方法 熟練掌握儲存過程的呼叫方法 了解觸發器的概念 優點 掌握觸發器的方法和步驟 掌握觸發器的使用 oracle,plsql 功能要求 借書時要求輸入借閱流水號,借書證號,圖書編號。即該儲存過程有3個輸入引數 借書時,借書日期為系統時間。圖書的是否借出...