1. 存儲過程和觸發器有什麼區別
觸發器是特殊的存儲過程,因為他們編譯的原理一樣!
一般的存儲過程都手動調用,而觸發器自己運行的,也就是說調用不了,他的觸發是被(update,insert,delete)語句觸發的!
具體靠自己去琢磨!
聯機幫助是最好的學習教程!
建議:多去csdn看看!
2. 簡單說說存儲過程與觸發器的概念與作用
存儲過程就是一個sql的程序集 可以包含多個SQL語句 並可以附帶各種邏輯判斷及處理
觸發器 就類似於程序里的事件觸發
只是這里通常是某個欄位的改變 某個表插入了數據 或者刪除某些數據
以上這些處理引發的另外一些表數據的改變
3. 資料庫存儲過程、函數、觸發器的區別是什麼
三者差別:
1、存儲過程實現的功能要復雜一點,而函數實現的功能針對性比較強。;
2、存儲過程一般是作為一個獨立的部分來執行,而函數可以作為查詢語句的一個部分來調用;
3、觸發器是特殊的存儲過程,存儲過程需要程序調用,而觸發器會自動執行。
分別含義:
1、存儲過程的特點
①存儲過程只在創建時進行編譯,以後執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
② 當對資料庫進行復雜操作時(如對多個表進行Update、Insert、Query、Delete時),可將此復雜操作用存儲過程封裝起來。
③可以在過程中調用另一個存儲過程。可以在存儲過程中調用函數。這可以簡化一系列復雜語句。
④ 安全性高,可設定只有某用戶才具有對指定存儲過程的使用權。
⑤參數有三種(IN、OUT、IN OUT),可返回多個參數值。
⑥在ORACLE中,若干個有聯系的過程可以組合在一起構成程序包。
⑦存儲過程是資料庫中的一個重要對象,任何一個設計良好的資料庫應用程序都應該用到存儲過程。
2、函數的特點
①函數只有一種參數(IN),只有一條RETURN語句,只能返回單一的值。
②可在SQL語句(DML或SELECT)中調用函數。由於函數可以返回一個表對象,因此它可以在查詢語句中位於FROM關鍵字的後面。
3、觸發器的特點
觸發器是特殊的存儲過程,存儲過程需要程序調用,而觸發器會自動執行。
4. 存儲過程與觸發器的區別
觸發器與存儲過程非常相似,觸發器也是SQL語句集,兩者唯一的區別是觸發器不能用EXECUTE語句調用,而是在用戶執行Transact-SQL語句時自動觸發(激活)執行。觸發器是在一個修改了指定表中的數據時執行的存儲過程。通常通過創建觸發器來強制實現不同表中的邏輯相關數據的引用完整性和一致性。由於用戶不能繞過觸發器,所以可以用它來強制實施復雜的業務規則,以確保數據的完整性。觸發器不同於存儲過程,觸發器主要是通過事件執行觸發而被執行的,而存儲過程可以通過存儲過程名稱名字而直接調用。當對某一表進行諸如UPDATE、INSERT、DELETE這些操作時,SQLSERVER就會自動執行觸發器所定義的SQL語句,從而確保對數據的處理必須符合這些SQL語句所定義的規則。
5. sql中的觸發器與存儲過程有什麼相同點和不同點希望能專業點,謝謝
一、功能不同:
1、存儲過程的功能:
(1) 變數說明
(2) ANSI(美國國家標准化組織)兼容的SQL命令(如Select,Update….)
(3) 一般流程式控制制命令(if…else…、while….)
2、觸發器的功能:
(1)強化約束(Enforce
restriction)
(2)跟蹤變化Auditing
changes
(3)級聯運行(Cascaded
operation)
二、指代不同
存儲過程:在大型資料庫系統中,一組為了完成特定功能的SQL語句集。
觸發器:SQL server 提供給程序員和數據分析員來保證數據完整性的一種方法。
三、作用不同:
1、存儲過程:局時存儲過程,以兩個井字型大小(##)號開始,則該存儲過程將成為一個存儲在tempdb資料庫中的全局臨時存儲過程,全局臨時存儲過程一旦創建,以後連接到伺服器的任意用戶都可以執行它,而且不需要特定的許可權。
2、觸發器:可用於強制引用完整性,以便在多個表中添加、更新或刪除行時,保留在這些表之間所定義的關系。然而,強制引用完整性的最好方法是在相關表中定義主鍵和外鍵約束。
四、相同點:
觸發器是自動的:它們在對表的數據作了任何修改(比如手工輸入或者應用程序採取的操作)之後立即被激活。
觸發器可以通過資料庫中的相關表進行層疊更改。例如,可以在 titles 表的 title_id 列上寫入一個刪除觸發器,以使其它表中的各匹配行採取刪除操作。該觸發器用 title_id 列作為唯一鍵,在 titleauthor、sales 及 roysched 表中對各匹配行進行定位。
觸發器可以強制限制,這些限制比用 CHECK 約束所定義的更復雜。與 CHECK 約束不同的是,觸發器可以引用其它表中的列。
(5)簡述存儲過程和觸發器各自的特點擴展閱讀:
觸發器可通過資料庫中的相關表實現級聯更改;通過級聯引用完整性約束可以更有效地執行這些更改。觸發器可以強制用比 CHECK 約束定義的約束更為復雜的約束。與CHECK約束不同,觸發器可以引用其它表中的列。例如,觸發器可以使用另一個表中的 SELECT 比較插入或更新的數據,以及執行其它操作,如修改數據或顯示用戶定義錯誤信息。
觸發器也可以評估數據修改前後的表狀態,並根據其差異採取對策。
6. 存儲過程和觸發器的區別
一、參考不同
1、存儲過程:是大型的SQL語句集,用於在大型資料庫系統中完成特定的功能。
2、初始化:SQLServer提供給程序員和數據分析人員以確保數據初始化的一種方法。
二、特點不同
1、存儲過程:存儲在資料庫中,編譯後永久有效,用戶通過指定存儲過程的名稱並指定參數(如果存儲過程具有參數)來執行。
2、insert:是與表事件相關的特殊存儲過程,程序的執行不被程序調用,也不是猛辯由程序手動啟動,而是由事件觸發,以便在操作表時(插入,刪除,更新))執行將被激活。
三、作用不同
1、存儲過程:以兩個遏制號(##)開頭的官僚存儲過程,該存儲過程將成為存儲在tempdb資料庫中的臨時存儲過程,一旦創建了該臨時存儲過程,它將被連接到伺服器稍後。任何用戶都可以在沒有特殊許可權的情況下執行它。
2、設置為:可用於強制引用常量,在添加,更新或刪除多個表中的行時終止,保留這些表之間定義的關系。但是,強轎大制閉知豎引用替換的最佳方法是在相關表中定義主鍵和外鍵約束。
7. 存儲過程和觸發器有什麼不同
首先介紹一下觸發器:
觸發器是一種特殊類型的存儲過程,當使用下面的一種或多種數據修改操作在指定表中對數據進行修改時,觸發器會生效: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 代碼的操作由一條執行過程代碼的單獨語句就可實現,而不需要在網路中發送數百行代碼。
可作為安全機制使用。
即使對於沒有直接執行存儲過程中語句的許可權的用戶,也可授予他們執行該存儲過程的許可權
8. sql視圖 存儲過程 觸發器各自的優點是什麼
視圖的優點:
提高數據安全性,可以不讓用戶看到表中的某個欄位。比如password,你只給他們執行視圖的許可權,不給執行表的許可權,他們就無法查看全部數據。
還有可以建立一個視圖,內容包括兩個表,更新的時候只需要指定ID,而不用管它來自哪個表,對應表中的數據就會自動更新。
存儲過程的優點:
包括視圖的所有優點,還可以讓不懂資料庫的人也能也用資料庫,還有就是方便程序計設,比如我負責前台程序設計,你負責寫存程,我不用管你是怎麼寫,最後只接調用,我們分工明確,我也不需要懂你所懂的,這為用不懂語言和不同專業的人在一起合作提供了良好的平台。提高開發效率。
觸發器的優點:
保證數據的正確性和邏輯,比如訂單表中新增一條數據,對應在庫存表中會減少一個產品一樣。
還有保證數據的安全性,比如當用戶刪除表A,我們可以判斷他是否為Admin組的用戶,如果不是,就會給出錯誤的提示,並將事務回滾。
我知道的就這么多了。。。嘿嘿。
9. 簡述存儲過程,觸發器,函數的異同
觸發器是特殊的存儲過程,存儲過程需要程序調用,而觸發器會自動執行;你所說的函數是自定義函數吧,函數是根據輸入產生輸出,自定義只不過輸入輸出的關系 由用戶來定義。在什麼時候用觸發器?要求系統根據某些操作自動完成相關任務,比如,根據買掉的產品的輸入數量自動扣除該產品的庫存量。什麼時候用存儲過 程?存儲過程就是程序,它是經過語法檢查和編譯的SQL語句,所以運行特別快。