概念:觸發器(trigger)是SQL server 提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的預存程序,它的執行不是由程式調用,也不是手動啟動,而是由事件來觸發,例如當對一個表進行操作( insert,delete, update)時就會啟動它執行。觸發器經常用於加強資料的完整性約束和業務規則等。透過查詢資料字典DBA_TRIGGERS和USER_TRIGGERS,可以取得觸發器的相關資訊。 SQL3的觸發器是一個能由系統自動執行對資料庫修改的語句。
通俗的來講,觸發器就是一個觸發裝置,裝置裡面存有一段操作。一旦達到特定條件,裝置將被觸發並執行其中儲存的操作。
建立觸發器實例(關鍵字:trigger)
範例一:建立一個使用者表(使用者ID,使用者名稱),建立一個觸發器(當使用者表中插入資料時,自動產生一個全域唯一的ID)
先建立user表
create table user( id int PRIMARY KEY, name varchar(20) );
建立觸發器
-- 建立触发器名为tt create TRIGGER tt -- 触发条件,向user表中插入数据时启动触发器 BEFORE insert on user -- 检查表中每一行,对新插入的数据进行操作 for EACH ROW -- 执行操作 BEGIN set new.id=UUID(); END
剛剛建立的觸發器(查看目前資料庫下全部觸發器的程式碼show triggers)
效果:在表中插入三個使用者名稱,自動產生三個ID
insert user(name) VALUE('张三'),('李四'),('王五')
#例二:再建立一個訂單表DD(訂單ID,商品名稱,使用者ID),建立一個觸發器tq1(當刪除一個使用者時,該使用者的訂單也會被刪除) 建表
create table DD( ddid int PRIMARY KEY, ddname VARCHAR(20), userid VARCHAR(50) )
#建立觸發器
delimiter $ -- 建立触发器名为tq create TRIGGER tq1 -- 触发条件,再dd表删除数据之后启动触发器 AFTER DELETE on user -- 检查表中每一行,对新插入的数据进行操作 for EACH ROW -- 执行操作 BEGIN DELETE FROM dd WHERE old.id=userid; END $ delimiter ;表中新增兩個資料 效果:刪除user表中的用戶,dd表中的記錄也跟著刪除刪除張三
delete from user WHERE name='张三'觸發器能否完全取代外鍵
以上是MySQL資料庫觸發器怎麼建立的詳細內容。更多資訊請關注PHP中文網其他相關文章!