觸發器的使用
觸發器
和存儲過程比較
1.共同點
針對表的操作(sql語句集合)
2.區別點
不需要調用
觸發器在當前版本里不太穩定,不建議在有重要數據的數據庫裏使用
約束:
目的:保證數據的安全(獨立性、共享性) 排除數據冗餘性
域完整性約束(列):數據類型、格式、值域範圍(enum、set)、是否爲空、主鍵、自動增長等;
實體完整性約束(行):自己整理
用戶自定義約束:
例如:年齡 int 0-100
參照完整性約束:外鍵
練習:使用觸發器完成check約束
1、創建觸發器
語法:
創建存儲過程:create procedure 名稱(參數)
begin
流程控制語句
sql語句集合
end//
創建觸發器: create trigger 名稱 觸發時間(after|before) 觸發事件(insert、update、delete)
on 表名 for each row
begin
局部變量、用戶變量等;
流程控制語句;
sql語句集合
call 存儲過程名();
end//
練習1:對t1創建觸發器,執行insert語句後,將用戶變量str賦值“working”
練習2:對t1(字段s1)創建按觸發器,刪除數據後,將t2裏對應的記錄同步刪除
第一步:創建觸發器
create trigger t1_delete after delete on t1 for each row
delete from t2 where s2=OLD.s1;
第二步:激活觸發器
delete from t1;
第三步:驗證結果
select * from t2;