更新時間:2021-06-21 14:07:49作者:admin2
首先介紹一下觸發器: 觸發器是一種特殊類型的存儲過程,當使用下面的一種或多種數據修改操作在指定表中對數據進行修改時,觸發器會生效:UPDATE、INSERT 或 DELETE。觸發器可以查詢其它表,而且可以包含復雜的 SQL 語句。它們主要用于強制復雜的業務規則或要求。例如,可以控制是否允許基于顧客的當前帳戶狀態插入定單。 觸發器還有助于強制引用完整性,以便在添加、更新或刪除表中的行時保留表之間已定義的關系。然而,強制引用完整性的最好方法是在相關表中定義主鍵和外鍵約束。如果使用數據庫關系圖,則可以在表之間創建關系以自動創建外鍵約束。有關詳細信息,請參見表關系。 使用觸發器的優點 觸發器的優點如下: 觸發器是自動的:它們在對表的數據作了任何修改(比如手工輸入或者應用程序采取的操作)之后立即被激活。 觸發器可以通過數據庫中的相關表進行層疊更改。例如,可以在 titles 表的 title_id 列上寫入一個刪除觸發器,以使其它表中的各匹配行采取刪除操作。該觸發器用 title_id 列作為唯一鍵,在 titleauthor、sales 及 roysched 表中對各匹配行進行定位。 觸發器可以強制限制,這些限制比用 CHECK 約束所定義的更復雜。與 CHECK 約束不同的是,觸發器可以引用其它表中的列。 再介紹存儲過程: 存儲過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯后存儲在數據庫中。用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象,任何一個設計良好的數據庫應用程序都應該用到存儲過程。總的來說,存儲過程具有以下一些優點: ◆存儲過程允許標準組件式編程 ◆存儲過程能夠實現較快的執行速度 ◆存儲過程能夠減少網絡流量 ◆存儲過程可被作為一種安全機制來充分利用 使用 SQL Server 中的存儲過程而不使用存儲在客戶計算機本地的 Transact-SQL 程序的優勢有: 允許模塊化程序設計。 只需創建過程一次并將其存儲在數據庫中,以后即可在程序中調用該過程任意次。存儲過程可由在數據庫編程方面有專長的人員創建,并可獨立于程序源代碼而單獨修改。 允許更快執行。 如果某操作需要大量 Transact-SQL 代碼或需重復執行,存儲過程將比 Transact-SQL 批代碼的執行要快。將在創建存儲過程時對其進行分析和優化,并可在首次執行該過程后使用該過程的內存中版本。每次運行 Transact-SQL 語句時,都要從客戶端重復發送,并且在 SQL Server 每次執行這些語句時,都要對其進行編譯和優化。 減少網絡流量。 一個需要數百行 Transact-SQL 代碼的操作由一條執行過程代碼的單獨語句就可實現,而不需要在網絡中發送數百行代碼。 可作為安全機制使用。 即使對于沒有直接執行存儲過程中語句的權限的用戶,也可授予他們執行該存儲過程的權限