推薦學習:
概念:觸發器(trigger)是SQL server 提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對一個表進行操作( insert,delete, update)時就會啟用它執行。觸發器經常用於加強資料的完整性約束和業務規則等。 觸發器可以從 DBA_TRIGGERS ,USER_TRIGGERS 資料字典中查到。SQL3的觸發器是一個能由系統自動執行對資料庫修改的語句。
例一:建立一個使用者表(使用者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資料庫觸發器的詳細內容,更多請關注TW511.COM其它相關文章!