標籤:-- where for 臨時 before sel weight date 應用
觸發器是與表有關的資料庫物件,觸發器只能是針對建立的永久表,而不能是暫存資料表。
1.1 建立觸發器
-- 文法:CREATE TRIGGER trigger_name trigger_time trigger_eventON tbl_name FOR EACH ROW trigger_stmt
trigger_time:是觸發器的觸發時間,可以是 before或after, before是檢查約束前觸發,而after是檢查約束後觸發。
trigger_event:是觸發器的觸發事件,可以是 insert,update,delete。
同一個表相同的觸發時間的相同觸發事件,只能定義一個觸發器。使用別名old和new 來引用觸發器中發生變化的記錄內容。
-- 先查看city_memory資料(觸發前查看錶資料)SELECT * FROM city_memory;
-- 建立city表的insert 觸發器 使用AFTER觸發時間DELIMITER $$CREATE TRIGGER tri_city AFTER INSERT ON city FOR EACH ROW BEGININSERT INTO city_memory (country_id, cityname, Citycode)VALUES (new.country_id, new.cityname, new.Citycode); END;$$DELIMITER ;-- 插入city表資料,觸發city表插入觸發器INSERT INTO city(country_id, cityname, Citycode) VALUES(2,‘中國觸發‘,‘001觸發‘);
-- 再次查看SELECT * FROM city_memory;
下面是city表
2. 查看觸發器
-- 使用information_schema.triggers來查看SELECT * FROM information_schema.triggers WHERE trigger_name = ‘tri_city‘
3. 刪除觸發器
DROP TRIGGER tri_city;
總結:觸發器的限制:
(1)觸發程式不能調用將資料返回用戶端的儲存程式。
(2)不能在觸發器中使用以顯式或隱式方式開始或結束事務的語句。
編寫過於複雜的觸發器或者增加過多的觸發器對記錄的插入、更新、刪除操作肯定會有比較嚴重的影響。不要將應用的處理邏輯過多的依賴於觸發器來處理。
mysql 開發基礎系列19 觸發器