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

MySQL触发器的简单操作

发布时间:2022-11-25 13:01:34 所属栏目:MySql教程 来源:
导读:  触发器是MySQL的数据库对象之一,该对象与编程语言中的函数非常类似,都需要声明、执行等。但触发器的执行不是有程序调用的,也不是有手动启动的,而是有事件来触发、激活从而实现执行。

  1、为什么要用

  触发器是MySQL的数据库对象之一,该对象与编程语言中的函数非常类似,都需要声明、执行等。但触发器的执行不是有程序调用的,也不是有手动启动的,而是有事件来触发、激活从而实现执行。
 
  1、为什么要用触发器呢?
 
  先看两个实例:
 
  *在学生表中,有用字段学生名字,字段学生总数,每当添加一条关于学生记录时,协商的总数就必须同时改变。
 
  *在客户信息表中,有字段客户名字,字段客户电话和字段客户地址缩写,每当添加一条客户记录时,都需要检查客户电话号码是否正确,客户地址缩写是否正确。
 
  上述实例,业务逻辑不同,但有共同之处,即在表发生更改时,自动进行一些处理。这时就可以使用触发器数据库对象,例如第一个实例mysql触发器,可以创建一个触发器,在添加一条记录时,就执行一次计算学生总数的操作,这样就可以保证每次添加后数据一致。
 
  MySQL软件在触发如下语句时,就会自动执行所设置的操作:
 
  *DELETE 语句。
 
  *INSERT 语句。
 
  *UPDATE 语句。
 
  其他SQL语句在不会触发。
 
  2、创建触发器
 
  在MySQL中,创建触发器的SQL语句如下:
 
  create trigger trigger_name BEFORE|AFTER trigger_EVENT ON TABLE_NAME FOR EACH ROW trigger_STMT
 
  上述语句中,trigger_name 参数表示要创建的触发器名字,不能与已经创建的重复,BEFORE和AFTER参数指定了触发器执行时间,BEFORE是在触发器事件前,BEFORE是在触发器事件后,trigger_EVENT参数表示触发器执行条件,包含DELETE、INSERT、UPDATE语句,TABLE_NAME表示触发事件操作表的名字,FOR EACH ROW表示任何一条记录的操作都触发,trigger_STMT参数表示激活触发器后被执行的语句。
 
  实例:
 
  (1)创建两个表tab1和tab2
 
  DROP TABLE IF EXISTS tab1;
 
  CREATE TABLE tab1(
 
  tab1_id int(10)
 
  );
 
  DROP TABLE IF EXISTS tab2;
 
  CREATE TABLE tab2(
 
  tab2_id int(10)
 
  );
 
  (2)创建触发器,实现tab1添加数据时tab2自动添加
 
  CREATE TRIGGER tri_tab1_to_tab2
 
  AFTER INSERT ON tab1
 
  FOR EACH ROW
 
  insert into tab2(tab2_id) values(new.tab1_id);
 
  (3)向tab1中插入数据
 
  INSERT INTO tab1(tab1_id) values('0001');
 
  (4)查看结果
 
  mysql bin日志查看器_边门正触发改负触发接线图_mysql触发器
 
  3、查看触发器
 
  在MySQL中不能有同名的触发器,所以在新建触发器之前,必须要查看触发器,可以使用如下命令:
 
  SHOW TRIGGERS \G;
 
  运行效果如下:
 
  mysql bin日志查看器_边门正触发改负触发接线图_mysql触发器
 
  在执行完SHOW TRIGGERS \G命令后,会显示一个列表,在该列表中,会显示出触发器的所有信息。
 
  4、删除触发器
 
  在MySQL中,可以使用DROP TRIGGER trigger_name删除触发器,其中trigger_name是想要删除发触发器名称。
 
  mysql触发器_边门正触发改负触发接线图_mysql bin日志查看器
 
  执行完成后,再次使用命令查看触发器,我们发现已经没有所建的触发器了
 

(编辑:云计算网_梅州站长网)

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