加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL 触发器的基础操作

发布时间:2022-12-19 15:37:28 所属栏目:MySql教程 来源:
导读:  1.为什么使用触发器:

  在MySQL数据库中,数据库对象表是存储和操作数据的逻辑结构,而数据库对象触发器则用来实现由一些表事件触发的某个操作。在数据库系统中,当执行表事件时,则会激活触发器,从而执
  1.为什么使用触发器:
 
  在MySQL数据库中,数据库对象表是存储和操作数据的逻辑结构,而数据库对象触发器则用来实现由一些表事件触发的某个操作。在数据库系统中,当执行表事件时,则会激活触发器,从而执行器包含的操作。触发器的操作包含创建、查看、删除。
 
  触发器是数据库对象之一mysql触发器,该对象与编程语言 中的函数非常类似,都需要声明、执行等。但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发、激活从而实现执行。例如:在学生表中有学生名字、学生总数字段,每当添加一条学生记录时,学生的总数就必须同时改变。对于这个实例可以创建一个触发器,每次添加一条学生记录时,就执行一次计算学生总数的操作,这样就可保证每次添加一条学生记录后,学生总数和学生记录数一致。MySQL中在触发如下DELETE、INSERT、UPDATE语句时,就会自动执行所设置的操作,其他SQL语句则不会激活触发器。之所以会经常使用触发器,是因为该对象能够加强数据库表中数据的完整性约束和业务规则等。
 
  2.创建触发器:
 
  按照激活触发器时所执行的语句条目,可以将触发器分为“一个执行语句的触发器”和“多个执行语句的触发器”
 
  2.1 创建有一条执行语句的触发器:
 
  语法形式为:
 
  123
 
  create trigger trigger_name before | after trigger_eventon table_name for each row trigger_stmt
 
  //trigger_name 参数表示索要创建的触发器的名字,触发器的名字不能重复。建议触发器的命名为trigger_xxx或者tri_xxx;
 
  before和after参数指定了触发器执行的时间,before:指在触发器事件之前执行触发器语句,after:指在触发器事件之后执行触发器语句;
 
  trigger_event表示触发事件,即触发器执行条件,包delete、insert、update语句;table_name触发事件操作表的名字;
 
  for each row表示任何一条记录上的操作满足触发事件都会触发该触发器;trigger_stmt表示激活触发器后被执行的语句。
 
  示例:
 
  1234
 
  create trigger tri_diaryteim before insert on t_dept for each rowinsert into t_diary values(null,'t_dept',now());//功能说明:向部门表插入一条记录之前向表t_diary插入当前时间记录。
 
  2.2 创建包含多条执行语句的触发器:
 
  语法形式如下:
 
  123456
 
  create trigger trigger_namebefore|after trigger_eventon table_name for each rowbegintrigger_stmtend
 
  //比“只有一条执行语句的触发器”语法多了两个关键字begin和end,在这两个关键字之间是所要执行的多个执行语句的内容,执行语句之间用分号隔开。
 
  在mysql中,一般情况下“;”符号作为语句的结束符号,可是在创建触发器时,需要用到“;”符号作为执行语句的结束符号。
 
  为了解决该问题,可以使用关键字DELIMITER语句,例如:"DELIMITER$$",可以用来将结束符号设置为“$$”.
 
  示例:
 
  12345678910
 
  DELIMITER $$create trigger tri_diarytime2after inserton t_dept for each rowbegininsert into t_diary values(null,'t_dept',now());insert into t_diary values(null,'t_dept',now());end$$DELIMITER;
 
  3.查看触发器:
 
  3.1 通过SHOW TRIGGERS语句查看触发器:
 
  语法为:
 
  show triggers \G
 
  3.2 通过查看系统表triggers实现查看触发器:
 
  操作语句为;
 
  123
 
  use information_schema;select * from triggers \Gselect * from triggers where trigger_name='tri_diarytime2' \G //查看指定触发器
 
  3.删除触发器:
 
  语法为:
 
  drop trigger trigger_name;
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!