MYSQL中禁用 啟動觸發器

2022-06-07 11:36:10 字數 1935 閱讀 2104

在使用mysql過程中,經常會使用到觸發器,但是有時使用不當會造成一些麻煩。有沒有一種辦法可以控制觸發器的呼叫呢?

觸發器顧名思義就是資料庫在一定的調條件自動呼叫的sql語句,觸發器拒絕了人工呼叫的過程,由資料庫mysql資料庫自動的呼叫,執行更加高效。

如何禁用觸發器呢?

表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;

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 ;

重新編寫觸發器:

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 ;

set @enable_trigger = 1;

insert into demo_1(stuname , age) values(『小強』, 17);

執行之後,表demo_1中增加一條資料

2 小強 17

表demo_2中同樣也增加一條資料

2 2 98.5

set @enable_trigger = 0;

insert into demo_1(stuname , age) values(『小強』, 17);

執行之後:

執行之後,表demo_1中增加一條資料

2 小強 17

表demo_2中沒有增加任何資料

以上就解決了觸發器的靈活呼叫。

come from:

MYSQL中禁用 啟動觸發器

在使用mysql過程中,經常會使用到觸發器,但是有時使用不當會造成一些麻煩。有沒有一種辦法可以控制觸發器的呼叫呢?觸發器顧名思義就是資料庫在一定的調條件自動呼叫的sql語句,觸發器拒絕了人工呼叫的過程,由資料庫mysql資料庫自動的呼叫,執行更加高效。如何禁用觸發器呢?表demo 1 create ...

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...

MySQL中觸發器

觸發器是與某個事件相關的特殊儲存過程,與儲存過程不同的是,儲存過程需要用 call 呼叫而出發器不需要使用call呼叫呼叫。也就是自己預先定義好了,當某個事件發生時,就會自動出發觸發器進行相關的操作。僅對 insert update delete 有效,對select無。trigger name 觸...