diff --git "a/48 \351\251\254\345\256\217\350\276\276/1012\347\254\224\350\256\260.md" "b/48 \351\251\254\345\256\217\350\276\276/1012\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..c497bc7fa3246109cff15eda52d101cbb9278f12 --- /dev/null +++ "b/48 \351\251\254\345\256\217\350\276\276/1012\347\254\224\350\256\260.md" @@ -0,0 +1,51 @@ +## 触发器 + +触发器(trigger)是与表有关的数据库对象,指在insert/update/delete之前(BEFORE)或之后(AFTER),触发并执行触发器中定义的SQL语句集合。 + +事件A 对user表新增一条数据 姓名name 年龄age 性别sex + +事件B 对userlogs记录一条user表的操作 new.name,new.age + +触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作。 + +使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的 + +### 创建触发器 + +语法 + +create trigger 触发器名称 +before/after(触发时机) insert/update/delete(触发类型) +on 表名 for each row -- 行级触发器 +begin + 触发的语句... +end; + +查看 + +show trigger + +删除 + +drop trigger 名字; + +自己定义错误代码: + +signal sqlstate 'MD001' set message_text = '行数超出5行,不能新增'; + +创建基础语法 + + DELIMITER // + CREATE TRIGGER [触发器的名字] + [触发器执行时机] [触发器监测的对象] + ON [表名] + FOR EACH ROW [触发器主体代码]// + DELIMITER ; + +### 触发器的优缺点 + +1. 确保数据的完整性 +2. 触发器可以帮助我们记录操作日志 +3. 触发器还可以用在操作数据前,对数据进行合法性检查 + +