更新時(shí)間:2021-06-21 18:16:47作者:admin2
存儲(chǔ)過程就是一個(gè)sql的程序集 可以包含多個(gè)SQL語(yǔ)句 并可以附帶各種邏輯判斷及處理觸發(fā)器 就類似于程序里的事件觸發(fā)只是這里通常是某個(gè)字段的改變 某個(gè)表插入了數(shù)據(jù) 或者刪除某些數(shù)據(jù) 以上這些處理引發(fā)的另外一些表數(shù)據(jù)的改變
所謂存儲(chǔ)過程,是一組預(yù)編譯的Transact-SQL語(yǔ)句,存儲(chǔ)在SQL Server中,被作為一種數(shù)據(jù)庫(kù)對(duì)象保存起來(lái)。存儲(chǔ)過程的執(zhí)行不是在客戶端而是在服務(wù)器端(執(zhí)行速度快)。存儲(chǔ)過程可以是一條簡(jiǎn)單的Transact-SQL語(yǔ)句,也可以是復(fù)雜的Transact-SQL語(yǔ)句和流程控制語(yǔ)句的集合。在使用Transact-SQL語(yǔ)言編程的過程中,我們可以將某些需要多次調(diào)用的實(shí)現(xiàn)某個(gè)特定任務(wù)的代碼段編寫成一個(gè)過程,將其保存在數(shù)據(jù)庫(kù)中,并由SQL Server服務(wù)器通過過程名來(lái)調(diào)用它們,這些過程就叫做存儲(chǔ)過程(也稱為子程序)。 存儲(chǔ)過程在第一次執(zhí)行時(shí)進(jìn)行語(yǔ)法檢查和編譯,編譯好的版本存儲(chǔ)在高速緩存中,用于后續(xù)調(diào)用,下次調(diào)用時(shí)可以直接執(zhí)行。存儲(chǔ)過程的特點(diǎn): 存儲(chǔ)過程可以接受輸入?yún)?shù),并且可以用輸出參數(shù)的形式返回值。存儲(chǔ)過程可以包含復(fù)雜的流控制語(yǔ)句。 存儲(chǔ)過程建立好以后可以被反復(fù)調(diào)用。一個(gè)存儲(chǔ)過程可以調(diào)用另一個(gè)存儲(chǔ)過程,嵌套調(diào)用可多達(dá)32級(jí)。 由于存儲(chǔ)過程在建立和第一次執(zhí)行的時(shí)候被解析、優(yōu)化、編譯和緩存(駐留在高速緩沖存儲(chǔ)器中),因此其執(zhí)行速度比直接向SQL Server發(fā)送T-SQL語(yǔ)句快。 存儲(chǔ)過程的執(zhí)行是通過一條語(yǔ)句來(lái)完成的,避免了網(wǎng)絡(luò)上服務(wù)器和客戶機(jī)之間大量Transact-SQL語(yǔ)句的傳送,降低了網(wǎng)絡(luò)的通信量。 存儲(chǔ)過程可以被看作一種安全機(jī)制,即使用戶沒有對(duì)表或視圖的訪問權(quán)限,他們也可以被授予執(zhí)行對(duì)表或視圖進(jìn)行訪問的存儲(chǔ)過程的權(quán)限。、、、、、、、、、、、、、、、、、、、、、、、、、、、觸發(fā)器的作用 在指定的表中數(shù)據(jù)發(fā)生變化時(shí)被調(diào)用以響應(yīng)INSERT、UPDATE或DELETE事件。 用于保護(hù)表中的數(shù)據(jù),當(dāng)有操作影響到觸發(fā)器保護(hù)的數(shù)據(jù)時(shí),觸發(fā)器自動(dòng)強(qiáng)制執(zhí)行業(yè)務(wù)規(guī)則。 利用觸發(fā)器可以方便地實(shí)現(xiàn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)完整性。一般的存儲(chǔ)過程通過存儲(chǔ)過程名稱被直接調(diào)用,而觸發(fā)器主要是通過事件進(jìn)行觸發(fā)而被執(zhí)行(對(duì)表或視圖發(fā)出update、insert、delete語(yǔ)句)。 觸發(fā)器是一個(gè)功能強(qiáng)大的工具,它與表格緊密相連,在表中數(shù)據(jù)發(fā)生變化時(shí)自動(dòng)強(qiáng)制執(zhí)行。觸發(fā)器可以用于SQL Server約束、默認(rèn)值和規(guī)則的完整性檢查,還可以完成難以用普通約束實(shí)現(xiàn)的復(fù)雜功能。 觸發(fā)器的優(yōu)點(diǎn)觸發(fā)器是自動(dòng)的執(zhí)行的(往表里插入、修改、刪除時(shí)被自動(dòng)激活,從而防止對(duì)數(shù)據(jù)的不正確修改)。觸發(fā)器是基于一個(gè)表創(chuàng)建的,但可以針對(duì)多個(gè)表進(jìn)行操作,實(shí)現(xiàn)數(shù)據(jù)庫(kù)中的相關(guān)表進(jìn)行層疊更改。觸發(fā)器可以實(shí)現(xiàn)比 check約束更為復(fù)雜的數(shù)據(jù)完整性約束。一個(gè)表中可以同時(shí)存在三個(gè)不同操作的觸發(fā)器,對(duì)于同一個(gè)修改語(yǔ)句可以有多個(gè)不同的對(duì)策以響應(yīng)。