mysql之觸發器

2021-10-03 10:20:26 字數 2439 閱讀 7772

觸發器

作用:監視某種情況(增刪改)併發除某種操作(增刪改)

觸發器四要素:

監視地點,監視事件,觸發事件,觸發事件

建立觸發器的語法

create trigger 觸發器名

after/before

insert/delete/update

for each row

一句或多聚insert/delete/update語句

在觸發器中引用新行的值

對於insert 而言,新增的行用new來表示,行中的每一列的值,用new.列名表示

對於delete而言,原本有一行,後來被刪除,想要引用被刪除的這一行的,用old表示,old.列名引用被刪除行的列中的值

對於update而言,修改前的行用old表示,old.列名引用行中的值,修改後的行用new,new.列名引用修改後的值

刪除出發器:

drop trigger 觸發器名;

檢視觸發器

show triggers;

#商品create table g(

gid int,

gname varchar(10),

num int

)#下單

create table o(

oid int,

ogid int,

much int

)show tables

insert into g values(1,'84消毒',100);

insert into g values(2,'口罩',1000);

insert into g values(3,'n95口罩',300);

insert into g values(4,'酒精',550);

select * from g;

select *from o ;

drop table o ;

drop table g;

觸發器1,在下訂單時,商品庫存減少

create trigger tg1

after insert on o

for each row

update g set num=num-new.much where gid=new.ogid;

insert into o values(1,1,50);

select * from g;

select *from o ;

觸發器2 ,取消下單,庫存增加

create trigger tg2

after

delete on o

for each row

update g set num = num +old.much

where gid=old.ogid;

delete from o where oid = 1;

select * from g;

select *from o ;

#觸發器3 修改訂單

create trigger tg3

after

update on o

for each row

update g set num = num +old.much -new.much

where gid=old.ogid;

insert into o values(1,1,50);

insert into o values(2,2,150);

select * from g;

select *from o ;

update o set much =40

where oid = 2;

select * from g;

select *from o ;

show triggers;

drop trigger tg1 ;

drop trigger tg2 ;

drop trigger tg3 ;

show triggers

#對於下單進行判斷,如果訂單數量》5,認為是惡意訂單,強制把該訂單的購買數量改為5

delimiter $

create trigger tg4

before

insert on o

for each row

begin

if new.much >5 then

set new.much = 5;

end if;

update g set num=num-new.much

where gid=new.ogid;

end $

select * from g;

select *from o ;

insert into o values(3,3,50);

select * from g;

select *from o ;

mysql之觸發器詳解 MySQL之觸發器詳解

觸發器 trigger 監事某種情況,並出發某種操作。觸發器建立語法四要素 1 監視地點 table 2 監視事件 insert update delete 3 觸發時間 after before 4 觸發事件 insert update delete create trigger triggern...

MySQL之觸發器

觸發器是個特殊的儲存過程 當乙個預定義的事件發生的時候,被mysql自動呼叫 1 建立只有乙個執行語句的觸發器 create trigger trigger name trigger time trigger event on tb1 name for each row trigger stmttr...

MySQL之觸發器

觸發器 1.建立觸發器 r型別 insert update delete 格式 create trigger 觸發器名 觸發時間 觸發事件 on 表 from each now sql語句 新增一條資訊,顯示提示資訊 delimiter create trigger ct student after...