1、what?
什麼是觸發器(trigger)?
前兩篇介紹了儲存過程,儲存過程可以理解為sql語句集。那麼觸發器就是一種特殊的儲存過程,也就是一群特殊的sql語句集。
特殊在哪?
從上文得知,儲存過程是依賴名字才被呼叫的。不僅是儲存過程,我們常用的方法等,大部分也是先知道名字,才能去使用。就像吃飯採用訂外賣的形式,總要知道餐廳的名字才能下訂單。
觸發器被呼叫卻不用依賴名字。
還是吃飯這個行為,天天訂外賣,只有一家餐廳特別符合胃口,固定這家餐廳。一到吃飯時,就直接下單了。
觸發器就是個固定餐廳的訂單。它固定了一些資料庫操作的行為,只要一觸發事件,就能被驅動。
2、why?
為什麼要用觸發器?
資料庫操作無非增刪改查,觸發器主要作用於insert、delete、update(和create、drop、alter:ddl語言,暫且不講)。
當指定表發生此類操作時,自動啟用(所以是事件驅動)。根據執行的操作不同,又可分為兩類。
1)after觸發器
當發生insert、delete、update之後,該觸發器執行封裝好的操作。
2)instead of觸發器
當發生insert、delete、update時,該觸發器執行替代操作,不執行insert、delete、update,而是執行封裝好的操作。
3、how?
建立觸發器示例:
create trigger trigcategorydelete
on category
instead of delete --替代觸發器
as begin
---- 先刪除該類別下的所有新聞,再刪除該新聞類別
declare @id int
select @id = id from deleted
delete news where caid =@id
delete category where id = @id
end
SQL儲存過程 觸發器
儲存過程 由使用者使用create procedure語句在當前資料庫中建立 資料庫所有者擁有使用create procedure語句的預設許可權 語法 create proc edure procedure name 建立儲存過程示例 無引數 create procedure titles 138...
觸發器 儲存過程
1 為productsales資料庫中的產品表建立乙個名為update pno的update觸發器,該觸發器的作用是禁止更新產品表中的 productname 欄位的內容。並用update語句修改產品表中第一條記錄為 1 hp1500 印表機 2000 要求顯示 不能修改產品名稱 的警告資訊。cre...
儲存過程 觸發器
觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,就會自動執行觸發器所定義的sql 語句,從而確保對資料的處理必須符合由這些sql 語句所定義的規則。觸發器的主要作用就是其能夠實現由主鍵和外來鍵...