當前位置:首頁 » 服務存儲 » 存儲過程調用與觸發器的區別
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

存儲過程調用與觸發器的區別

發布時間: 2022-08-16 11:25:25

『壹』 存儲過程和觸發器有什麼區別

觸發器是特殊的存儲過程,因為他們編譯的原理一樣!

一般的存儲過程都手動調用,而觸發器自己運行的,也就是說調用不了,他的觸發是被(update,insert,delete)語句觸發的!

具體靠自己去琢磨!

聯機幫助是最好的學習教程!
建議:多去csdn看看!

『貳』 存儲過程,函數和觸發器的區別

存儲過程,可以返回多個值,函數只能一個;觸發器是一個特殊的存儲過程。當他滿足一當條件時執行,例子:如果幾個有關聯的表,其中主表的數據刪除了~那麼子表的也要一起刪掉。這情況可以用觸發,當主表數據刪除時觸發其它的操作。

『叄』 存儲過程和觸發器有什麼不同

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

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

使用觸發器的優點
觸發器的優點如下:

觸發器是自動的:它們在對表的數據作了任何修改(比如手工輸入或者應用程序採取的操作)之後立即被激活。

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

觸發器可以強制限制,這些限制比用 CHECK 約束所定義的更復雜。與 CHECK 約束不同的是,觸發器可以引用其它表中的列。
再介紹存儲過程:
存儲過程(Stored Procere)是一組為了完成特定功能的SQL語句集,經編譯後存儲在資料庫中。用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中的一個重要對象,任何一個設計良好的資料庫應用程序都應該用到存儲過程。總的來說,存儲過程具有以下一些優點:

◆存儲過程允許標准組件式編程

◆存儲過程能夠實現較快的執行速度

◆存儲過程能夠減少網路流量

◆存儲過程可被作為一種安全機制來充分利用

使用 SQL Server 中的存儲過程而不使用存儲在客戶計算機本地的 Transact-SQL 程序的優勢有:

允許模塊化程序設計。
只需創建過程一次並將其存儲在資料庫中,以後即可在程序中調用該過程任意次。存儲過程可由在資料庫編程方面有專長的人員創建,並可獨立於程序源代碼而單獨修改。

允許更快執行。
如果某操作需要大量 Transact-SQL 代碼或需重復執行,存儲過程將比 Transact-SQL 批代碼的執行要快。將在創建存儲過程時對其進行分析和優化,並可在首次執行該過程後使用該過程的內存中版本。每次運行 Transact-SQL 語句時,都要從客戶端重復發送,並且在 SQL Server 每次執行這些語句時,都要對其進行編譯和優化。

減少網路流量。
一個需要數百行 Transact-SQL 代碼的操作由一條執行過程代碼的單獨語句就可實現,而不需要在網路中發送數百行代碼。

可作為安全機制使用。
即使對於沒有直接執行存儲過程中語句的許可權的用戶,也可授予他們執行該存儲過程的許可權

『肆』 觸發器與存儲過程的區別是什麼

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

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

使用觸發器的優點
觸發器的優點如下:

觸發器是自動的:它們在對表的數據作了任何修改(比如手工輸入或者應用程序採取的操作)之後立即被激活。

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

觸發器可以強制限制,這些限制比用 CHECK 約束所定義的更復雜。與 CHECK 約束不同的是,觸發器可以引用其它表中的列。
再介紹存儲過程:
存儲過程(Stored Procere)是一組為了完成特定功能的SQL語句集,經編譯後存儲在資料庫中。用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中的一個重要對象,任何一個設計良好的資料庫應用程序都應該用到存儲過程。總的來說,存儲過程具有以下一些優點:

◆存儲過程允許標准組件式編程

◆存儲過程能夠實現較快的執行速度

◆存儲過程能夠減少網路流量

◆存儲過程可被作為一種安全機制來充分利用

使用 SQL Server 中的存儲過程而不使用存儲在客戶計算機本地的 Transact-SQL 程序的優勢有:

允許模塊化程序設計。
只需創建過程一次並將其存儲在資料庫中,以後即可在程序中調用該過程任意次。存儲過程可由在資料庫編程方面有專長的人員創建,並可獨立於程序源代碼而單獨修改。

允許更快執行。
如果某操作需要大量 Transact-SQL 代碼或需重復執行,存儲過程將比 Transact-SQL 批代碼的執行要快。將在創建存儲過程時對其進行分析和優化,並可在首次執行該過程後使用該過程的內存中版本。每次運行 Transact-SQL 語句時,都要從客戶端重復發送,並且在 SQL Server 每次執行這些語句時,都要對其進行編譯和優化。

減少網路流量。
一個需要數百行 Transact-SQL 代碼的操作由一條執行過程代碼的單獨語句就可實現,而不需要在網路中發送數百行代碼。

可作為安全機制使用。
即使對於沒有直接執行存儲過程中語句的許可權的用戶,也可授予他們執行該存儲過程的許可權

『伍』 存儲過程的調用與觸發器的調用有何區別

存儲過程在你需要使用的時候自行調用,觸發器在發生某件事情的時候自動調用。如Insert觸發器,當表Insert數據的時候自動就執行了觸發器裡面的代碼

『陸』 SQL中存儲過程與觸發器的區別

存儲過程相當於一個函數,需要自己調用,觸發器是自動執行不需要調用

『柒』 資料庫存儲過程、函數、觸發器的區別是什麼

三者差別:

1、存儲過程實現的功能要復雜一點,而函數實現的功能針對性比較強。;

2、存儲過程一般是作為一個獨立的部分來執行,而函數可以作為查詢語句的一個部分來調用;

3、觸發器是特殊的存儲過程,存儲過程需要程序調用,而觸發器會自動執行。

分別含義:

1、存儲過程的特點

①存儲過程只在創建時進行編譯,以後執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。

② 當對資料庫進行復雜操作時(如對多個表進行Update、Insert、Query、Delete時),可將此復雜操作用存儲過程封裝起來。

③可以在過程中調用另一個存儲過程。可以在存儲過程中調用函數。這可以簡化一系列復雜語句。

④ 安全性高,可設定只有某用戶才具有對指定存儲過程的使用權。

⑤參數有三種(IN、OUT、IN OUT),可返回多個參數值。

⑥在ORACLE中,若干個有聯系的過程可以組合在一起構成程序包。

⑦存儲過程是資料庫中的一個重要對象,任何一個設計良好的資料庫應用程序都應該用到存儲過程。

2、函數的特點

①函數只有一種參數(IN),只有一條RETURN語句,只能返回單一的值。

②可在SQL語句(DML或SELECT)中調用函數。由於函數可以返回一個表對象,因此它可以在查詢語句中位於FROM關鍵字的後面。

3、觸發器的特點

觸發器是特殊的存儲過程,存儲過程需要程序調用,而觸發器會自動執行。

『捌』 存儲過程與觸發器的區別

觸發器與存儲過程非常相似,觸發器也是SQL語句集,兩者唯一的區別是觸發器不能用EXECUTE語句調用,而是在用戶執行Transact-SQL語句時自動觸發(激活)執行。觸發器是在一個修改了指定表中的數據時執行的存儲過程。通常通過創建觸發器來強制實現不同表中的邏輯相關數據的引用完整性和一致性。由於用戶不能繞過觸發器,所以可以用它來強制實施復雜的業務規則,以確保數據的完整性。觸發器不同於存儲過程,觸發器主要是通過事件執行觸發而被執行的,而存儲過程可以通過存儲過程名稱名字而直接調用。當對某一表進行諸如UPDATE、INSERT、DELETE這些操作時,SQLSERVER就會自動執行觸發器所定義的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 語句的目的來使用存儲過程,它具有以下優點: 可以在單個存儲過程中。

『拾』 存儲過程與觸發器的區別和聯系

我的理解:主要是使用場合不同,還有就是觸發器中不能使用commit(這個應該是約定而不是規定)
存儲過程相當於打包好的sql語法,可以包含復雜的sql操作,在程序調用時只要執行該存儲過程,一句話就可以完成復雜的資料庫操作.