資料庫學習之儲存過程 觸發器

2021-09-30 14:50:17 字數 2333 閱讀 8944

儲存過程定義:

將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,只有在創造時進行編譯,以後每次執行時都不需再重新編譯。

觸發器定義:

觸發器是一種特殊的儲存過程,但它不能被顯示的呼叫,而是在往表中插入記錄,更新記錄或者刪除記錄時被自動的啟用;觸發器可以用來實現對錶實施複雜的完整性約束。

特別地:系統為觸發器準備了兩個專用表:inserted表和deleted表。

inserted表:存放執行delete或update語句而要從表中刪除的所有行。

delete表:存放執行insert或update語句而要想表中插入的所有行。

觸發器的種類

1.instead of: 用於替代引起觸發器執行的t-sql語句。可用於表,檢視。

2.after:在乙個insert,update或delete語句之後執行,進行約束檢查等動作都在after觸發器被啟用之前發生。只能用於表

注:乙個表或檢視的每乙個修改動作都可以有乙個instead of觸發器,乙個表的每個修改動作都可以有多個after觸發器

觸發器的建立

使用t-sql語句

creat trigger trigger_name

on[insert,update,delete]

asaql_statement

觸發器的刪除

基本語句

drop trigger trigger_name
檢視資料庫中已有的觸發器

基本語句

use  jxcsoftware

goselect*from sysobjects where xtype='tr'

檢視單個觸發器

基本語句

exec sp_helptext'觸發器名'
修改觸發器

基本語句

alter trigger trigger_name

on[insert,update,delete]

asaql_statement

當然對觸發器的這些基本操作還可以通過企業管理器來操作。大家可以針對不同版本的sql sever來進行學習。

觸發器的優點

1.自動執行

2.級聯更新

3.強化約束

4.跟蹤變化

5.強制業務邏輯

觸發器有這麼多優點,是不是就可以一味的去使用它呢?越多越好嗎?其實不是這樣的,觸發器功能強大,輕鬆可靠的實現許多複雜的功能,但是仍要慎用。原因是這樣的,如果我們濫用觸發器會造成資料庫及應用程式的維護困難

觸發器不是乙個簡單的儲存過程,它可以通過資料庫中的相關表實現級聯更改,不過,通過級聯引用完整性約束可以更有效的執行這些更改。同時觸發器可以強制比用check約束更為複雜的約束。

至於觸發器和約束的比較下篇部落格會寫到......

資料庫儲存過程與觸發器

資料庫儲存過程 儲存過程 stored procedure 是在大型 資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。優點 重複使用。儲存過程可以重複使用,從而可以減...

資料庫儲存過程和觸發器

建立儲存過程 create procedure titles sum title varchar 40 sum money output asselect sum sum price from titles where title like title godeclare totalcost mon...

資料庫觸發器和儲存過程

觸發器 trigger 是由事件來觸發某個操作。這些事件包括insert語句 update語句和delete語句。當資料庫系統執行這些事件時,會啟用促發其執行相應的操作。create trigger 觸發器名 before after 觸發事件 on 表名 for each row 執行語句 每插入...