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 触发器名字 触发时间 触发事件 onfor 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表中出现了刚才删除的数据