Mysql中禁用与启动触发器教程【推荐】
程序员文章站
2022-06-02 23:52:41
在使用mysql过程中,经常会使用到触发器,但是有时使用不当会造成一些麻烦。有没有一种办法可以控制触发器的调用呢?
触发器顾名思义就是数据库在一定的调条件自动调用的sql...
在使用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中禁用与启动触发器教程,希望对大家有所帮助