觸發器是乙個特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是當某一事件發生時觸發,例如當表執行deletet insert update時就會被執行。觸發器是用來維護表資料的完整性
觸發器分為:
after觸發器(之後觸發)
instead of 觸發器 (之前觸發)
觸發器裡有兩章特殊的表插入表(instered表)和刪除表(deleted表),這兩張是邏輯表也是虛表。有系統在記憶體中建立者兩張表,不會儲存在資料庫中。而且兩張表的都是唯讀的,只能讀取資料而不能修改資料。這兩張表的結果總是與被改觸發器應用的表的結構相同。當觸發器完成工作後,這兩張表就會被刪除。inserted表的資料是插入或是修改後的資料,而deleted表的資料是更新前的或是刪除的資料。
使用觸發器有如下優點:
自動執行。觸發器在對錶的數百據作了任何修改(比如手工輸入或者應用程度序的操作)之後立即被啟用。
級聯更新。觸發器可以通過資料庫中的相關表進行層疊更改,這比直接把問**寫在前台的做法更安全合理。
強化約束。觸發器可以引用其它表中的列,能夠實現答比check約束更為複雜的約束。
跟蹤變化。觸發器可以阻止資料庫中未經許可版的指定更新和變化。
強制業務邏輯。觸發器可用於執行管權理任務,並強制影響資料庫的複雜業務規則。
建立兩個表及關係
–新增–go
–create trigger tri_add
–on books for insert
–as– declare @typeid int
– select @typeid=typeid from inserted --系統自帶的表,儲存新增的資料
–update booktypes set nums=nums+1 where id=@typeid
–刪除–go
–create trigger tri_del
–on books for delete
–as– declare @typeid int
– select @typeid=typeid from deleted --系統自帶的表,儲存新增的資料
–update booktypes set nums=nums-1 where id=@typeid
–修改go
create trigger tri_upda
on books for update
asdeclare @typeid int
declare @newtypeid int
select @typeid=typeid from deleted
update booktypes set nums=nums-1 where id=@typeid
select @newtypeid=typeid from inserted
update booktypes set nums=nums+1 where id=@newtypeid
update books set typeid=2 where id=3
積分觸發器 mysql 觸發器的使用
將多個資料庫中的某列資料同步時需要用到mysql觸發器,以下可做參考,已簡單測試ok.修改紅棗的積分時觸發 drop trigger if exists u hongzaocount delimiter create trigger u hongzaocount after update on ho...
使用觸發器
觸發器 trigger 是個特殊的儲存過程 一般儲存過程主要通過儲存過程名而被直接呼叫,觸發器則是通過事件觸發執行。觸發器基於乙個表來建立並和乙個或多個資料修改操作 插入 更新或刪除 相關聯,可視作表的一部分。觸發器與資料庫中的表緊密相關,比如當對表執行insert update或delete操作時...
觸發器的使用!
可以定義乙個無論何時用insert語句向表中插入資料時都會執行的觸發器。當觸發insert觸發器時,新的資料行就會被插入到觸發器表和inserted表中。inserted表是乙個邏輯表,它包含了已經插入的資料行的乙個副本。inserted表包含了insert語句中已記錄的插入動作。inserted表...