Navicat中简单触发器的使用(初级,后续待完善)
笔者是SQL初学者,由于在日常工作中使用Excel处理数据时感觉有很多方面非常不便,现在正在学习使用Navicat来操作MySQL数据库来更好地解决实际工作中的问题,欢迎一起交流讨论。
现有一张考勤表“kaoqin”,如下:
此时我想删除表中的一条记录之前,自动将要删除的这条记录添加到另一个表“kaoqin_copy1”中:
此时我们将要用到mysql中的触发器:
触发器的特性:
1、有begin end体,begin end;之间的语句可以写的简单或者复杂
2、什么条件会触发:I、D、U
3、什么时候触发:在增删改前或者后
4、触发频率:针对每一行执行
5、触发器定义在表上,附着在表上。
也就是由事件来触发某个操作,事件包括INSERT语句,UPDATE语句和DELETE语句;可以协助应用在数据库端确保数据的完整性。
触发器的语法:
delimiter 自定义结束符号 create trigger 触发器名字 触发时间 触发事件 on 表 for each row begin -- 触发器内容主体,每行用分号结尾 end 自定义的结束符合 delimiter ;
那此时在Navicat中应该如何使用触发器来实现这一操作呢?
按上图步骤为kaoqin表添加名为tr1的触发器,触发器内容主体如下:
INSERT INTO kaoqin_copy1(`序号`, `姓名`, `文件名称`, `文件描述`, `时长H`, `备注`)
VALUES (OLD.`序号`, OLD.`姓名`, OLD.`文件名称`, OLD.`文件描述`, OLD.`时长H`, OLD.`备注`);
此时的OLD表示将要删掉的原数据
最后来看一下效果,删除kaoqin表中序号为330的数据
返回查看kaoqin_copy1表中出现了刚才删除的数据