『壹』 簡述存儲過程,觸發器,函數的異同
觸發器是特殊的存儲過程,存儲過程需要程序調用,而觸發器會自動執行;你所說的函數是自定義函數吧,函數是根據輸入產生輸出,自定義只不過輸入輸出的關系 由用戶來定義。在什麼時候用觸發器?要求系統根據某些操作自動完成相關任務,比如,根據買掉的產品的輸入數量自動扣除該產品的庫存量。什麼時候用存儲過 程?存儲過程就是程序,它是經過語法檢查和編譯的sql語句,所以運行特別快。
『貳』 簡單說說存儲過程與觸發器的概念與作用
存儲過程就是一個sql的程序集 可以包含多個SQL語句 並可以附帶各種邏輯判斷及處理
觸發器 就類似於程序里的事件觸發
只是這里通常是某個欄位的改變 某個表插入了數據 或者刪除某些數據
以上這些處理引發的另外一些表數據的改變
『叄』 存儲過程,函數和觸發器的區別
存儲過程,可以返回多個值,函數只能一個;觸發器是一個特殊的存儲過程。當他滿足一當條件時執行,例子:如果幾個有關聯的表,其中主表的數據刪除了~那麼子表的也要一起刪掉。這情況可以用觸發,當主表數據刪除時觸發其它的操作。
『肆』 觸發器的應用和用法
1、觸發器的定義就是說某個條件成立的時候,觸發器裡面所定義的語句就會被自動的執行。因此觸發器不需要人為的去調用,也不能調用。
2、觸發器的觸發條件其實在定義的時候就已經設定好了。
3、觸發器可以分為語句級觸發器和行級觸發器。簡單的說就是語句級的觸發器可以在某些語句執行前或執行後被觸發。而行級觸發器則是在定義的了觸發的表中的行數據改變時就會被觸發一次。
4、具體舉例:
1)、 在一個表中定義語句級的觸發器,當這個表被刪除時,程序就會自動執行觸發器裡面定義的操作過程。這個【刪除表的操作】就是觸發器執行的條件。
2)、 在一個表中定義行級的觸發器,那當【這個表中一行數據發生變化】的時候,比如刪除了一行記錄,那觸發器也會被自動執行了。
5、創建觸發器語句
6、觸發器作用(應用場景)
(1)數據確認
(2)實施復雜的安全性檢查
(3)做日誌記錄,跟蹤表上所做的數據操作等
(4)數據的備份和同步;
(4)闡述函數存儲過程和觸發器的用法擴展閱讀
一、觸發器介紹
1、資料庫觸發器是一個與表相關聯的、存儲的 PL/SQL 程序。每當一個特定的數據操作語句(Insert,update,delete)在指定的表上發出時,Oracle 自動地執行觸發器中定義的語句序
列。
2、觸發器的作用
觸發器可用於:
(1)數據確認
(2)實施復雜的安全性檢查
(3)做審計,跟蹤表上所做的數據操作等
(4)數據的備份和同步
3、觸發器的類型
(1)語句級觸發器
在指定的操作語句操作之前或之後執行一次,不管這條語句影響了多少行 。
(2)行級觸發器(FOR EACH ROW)
觸發語句作用的每一條記錄都被觸發。在行級觸發器中使用 old 和 new 偽記錄變數,識別值的狀態。
4、創建觸發器的語法
CREATE [or REPLACE] TRIGGER 觸發器名
{BEFORE |AFTER}
{DELETE | INSERT | UPDATE [OF 列名]}
ON 表名
[FOR EACH ROW [WHEN(條件) ] ]
參考資料
網路-Oracle觸發器
『伍』 存儲過程和觸發器用在哪些方面舉幾個實例
存儲過程就相當於子程序,比如批量處理SQL語句執行或執行SQL語言的編程。我用存儲過程用的最多的地方就是資料庫信息的分頁查詢。。
觸發器的例子除了銀行,最最常見的就是論壇啦。你回了別人一個帖子,資料庫里就會增加這個帖子的內容,同時更新樓主的回帖數,同時還增加你的發帖數
『陸』 資料庫存儲過程、函數、觸發器的區別
存儲過程和函數的區別:
1. 一般來說,存儲過程實現的功能要復雜一點,而函數的實現的功能針對性比較強。
2. 對於存儲過程來說可以返回參數,而函數只能返回值或者表對象。
3. 存儲過程一般是作為一個獨立的部分來執行,而函數可以作為查詢語句的一個部分來調用,由於函數可以返回一個表對象,因此它可以在查詢語句中位於FROM關鍵字的後面。
4. 當存儲過程和函數被執行的時候,SQL Manager會到procere cache中去取相應的查詢語句,如果在procere cache里沒有相應的查詢語句,SQL Manager就會對存儲過程和函數進行編譯。
Procere cache中保存的是執行計劃 (execution plan) ,當編譯好之後就執行procere cache中的execution plan,之後SQL SERVER會根據每個execution plan的實際情況來考慮是否要在cache中保存這個plan,評判的標准一個是這個execution plan可能被使用的頻率;其次是生成這個plan的代價,也就是編譯的耗時。保存在cache中的plan在下次執行時就不用再編譯了。
觸發器、存儲過程和函數三者有何區別:
觸發器是特殊的存儲過程,存儲過程需要程序調用,而觸發器會自動執行;
在什麼時候用觸發器?要求系統根據某些操作自動完成相關任務。
什麼時候用存儲過程?
存儲過程就是程序,它是經過語法檢查和編譯的SQL語句,所以運行特別快。
存儲過程和用戶自定義函數具體的區別
先看定義: 存儲過程存儲過程可以使得對資料庫的管理、以及顯示關於資料庫及其用戶信息的工作容易得多。存儲過程是 SQL 語句和可選控制流語句的預編譯集合,以一個名稱存儲並作為一個單元處理。
存儲過程存儲在資料庫內,可由應用程序通過一個調用執行,而且允許用戶聲明變數、有條件執行以及其它強大的編程功能。存儲過程可包含程序流、邏輯以及對資料庫的查詢。它們可以接受參數、輸出參數、返回單個或多個結果集以及返回值。 可以出於任何使用 SQL 語句的目的來使用存儲過程,它具有以下優點: 可以在單個存儲過程中。
『柒』 觸發器和存儲過程有什麼區別,描述觸發器的使用范圍
觸發器是一種特殊類型的存儲過程,當使用下面的一種或多種數據修改操作在指定表中對數據進行修改時,觸發器會生效:UPDATE、INSERT 或 DELETE.觸發器可以查詢其它表,而且可以包含復雜的 SQL 語句.它們主要用於強制復雜的業務規則或要求.例如,可以控制是否允許基於顧客的當前帳戶狀態插入定單.
觸發器還有助於強制引用完整性,以便在添加、更新或刪除表中的行時保留表之間已定義的關系.然而,強制引用完整性的最好方法是在相關表中定義主鍵和外鍵約束.如果使用資料庫關系圖,則可以在表之間創建關系以自動創建外鍵約束.有關詳細信息,請參見表關系.
『捌』 資料庫存儲過程、函數、觸發器的區別是什麼
三者差別:
1、存儲過程實現的功能要復雜一點,而函數實現的功能針對性比較強。;
2、存儲過程一般是作為一個獨立的部分來執行,而函數可以作為查詢語句的一個部分來調用;
3、觸發器是特殊的存儲過程,存儲過程需要程序調用,而觸發器會自動執行。
分別含義:
1、存儲過程的特點
①存儲過程只在創建時進行編譯,以後執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
② 當對資料庫進行復雜操作時(如對多個表進行Update、Insert、Query、Delete時),可將此復雜操作用存儲過程封裝起來。
③可以在過程中調用另一個存儲過程。可以在存儲過程中調用函數。這可以簡化一系列復雜語句。
④ 安全性高,可設定只有某用戶才具有對指定存儲過程的使用權。
⑤參數有三種(IN、OUT、IN OUT),可返回多個參數值。
⑥在ORACLE中,若干個有聯系的過程可以組合在一起構成程序包。
⑦存儲過程是資料庫中的一個重要對象,任何一個設計良好的資料庫應用程序都應該用到存儲過程。
2、函數的特點
①函數只有一種參數(IN),只有一條RETURN語句,只能返回單一的值。
②可在SQL語句(DML或SELECT)中調用函數。由於函數可以返回一個表對象,因此它可以在查詢語句中位於FROM關鍵字的後面。
3、觸發器的特點
觸發器是特殊的存儲過程,存儲過程需要程序調用,而觸發器會自動執行。
『玖』 SQL中觸發器、存儲過程
1、觸發器:當向表unit插入的數據後,且objectid>10000時,向表test_tab插入數據
create
trigger
trig1
after
insert
on
unit
for
each
row
when
(objectid>10000)
begin
insert
into
test_tab
values(new.objectid,new.name);
end;存儲過程:向表test插入調用存儲時的參數@id,@namecreate
procere
pro_name
@id,@nameasbegininsert
into
test
values(@id,@name);end;2、兩個區別,通過語法可以看出來,觸發器是在執行了一定的操作後,根據觸發條件,系統自動執行某一操作;而存儲過程則是根據你設定的特定操作,來進行相應的操作而已。3、至於什麼時候用觸發器,什麼時候用存儲過程,這個就要根據你的使用情況了。比如說,在對某張表進行了特定操作後,我們讓系統自動去執行一些操作,這個時候就可以使用觸發器。而存儲過程呢,如果我們在某一個事務中要進行的sql操作特別多,那麼我們就可以把這些sql語句用存儲過程來匯總,達到執行一遍存儲過程就可以執行多條sql命令的目的。另外,你聽說的現在不用觸發器,這點明顯是被誤導了,觸發器和存儲過程是各有優點的。舉個例子,比如說電信的通話記錄,你可以想像每天的數據量有多大,那麼為了保證系統的性能,我們就可以設定觸發器來對表的容量進行限定,比如達到了1000萬條數據,我們可以觸發一個清表的操作,那麼這張表就可以保證數據量始終在1000W以下(這個例子不是很合適,但是可以說明點問題)。之所以有人說不用觸發器,這點也是從資料庫性能來說的,說實話,使用觸發器時,如果設計得不合適,那麼對整個系統的性能會造成很大的影響的,所以在設計資料庫時,一定要慎重。整個產品的性能並不是說代碼優化就行了,資料庫的架構設計也應該考慮在其中。
『拾』 存儲過程和觸發器的區別和聯系。
我的理解:主要是使用場合不同,還有就是觸發器中不能使用commit(這個應該是約定而不是規定)
存儲過程相當於打包好的sql語法,可以包含復雜的sql操作,在程序調用時只要執行該存儲過程,一句話就可以完成復雜的資料庫操作.
觸發器是也是打包好的sql語法,是一種特殊類型的存儲過程,不由用戶直接調用。創建觸發器時會對其進行定義,以便在對特定表或列作特定類型的數據修改時執行
另外:觸發器相對一般的存儲過程也多了一些在代碼編寫方面的不同,比如說create
trigger
必須是批處理中的第一條語句,並且只能應用到一個表中等等.具體的可以看一下觸發器的說明;http://ke..com/view/1189954.htm