当前位置: 移动技术网 > IT编程>数据库>Mysql > Mysql中禁用与启动触发器教程【推荐】

Mysql中禁用与启动触发器教程【推荐】

2018年08月18日  | 移动技术网IT编程  | 我要评论

在使用mysql过程中,经常会使用到触发器,但是有时使用不当会造成一些麻烦。有没有一种办法可以控制触发器的调用呢?
触发器顾名思义就是数据库在一定的调条件自动调用的sql语句,触发器拒绝了人工调用的过程,由数据库mysql数据库自动的调用,执行更加高效。

如何禁用触发器呢?

1.新建两张表:

表demo_1:

create table `demo_1` (
 `id` int(11) not null auto_increment comment '主键',
 `stuname` varchar(32) default null comment '名字',
 `age` tinyint(4) default null comment '年龄',
 primary key (`id`)
) engine=innodb auto_increment=14 default charset=utf8;

表:demo_2

create table `demo_2` (
 `id` int(11) not null auto_increment comment '主键',
 `stu_id` int(11) default null comment '学生编号',
 `math` double default null comment '成绩',
 primary key (`id`)
) engine=innodb auto_increment=11 default charset=utf8;

2.然后给demo_1创建一个触发器

drop trigger if exists `inserttragger`;
delimiter ;;
create trigger `inserttragger` after insert on `demo_1` for each row begin
select id into @v1 from demo_1 order by id desc limit 1;
insert into demo_2(stu_id, math) values(@v1, 98.5);
end
;;
delimiter ;

3.触发器是:在demo_1中添加一条数据时,demo_2中自动添加一条数据。

4.但是我不想每次出入数据都触发触发器呢,只有在我想触发的时候才触发。

重新编写触发器:

drop trigger if exists `inserttragger`;
delimiter ;;
create trigger `inserttragger` after insert on `demo_1` for each row begin
if @enable_trigger = 1 then
select id into @v1 from demo_1 order by id desc limit 1;
insert into demo_2(stu_id, math) values(@v1, 98.5);
end if;
end
;;
delimiter ;

5.调用触发器

set @enable_trigger = 1;
insert into demo_1(stuname , age) values(‘小强', 17);
执行之后,表demo_1中增加一条数据
2 小强 17
表demo_2中同样也增加一条数据
2 2 98.5

6.禁用触法器

set @enable_trigger = 0;
insert into demo_1(stuname , age) values(‘小强', 17);
执行之后:
执行之后,表demo_1中增加一条数据
2 小强 17

表demo_2中没有增加任何数据

以上就解决了触发器的灵活调用。

总结

以上所述是小编给大家介绍的mysql中禁用与启动触发器教程,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网