觸發器
作用:監視某種情況(增刪改)併發除某種操作(增刪改)
觸發器四要素:
監視地點,監視事件,觸發事件,觸發事件
建立觸發器的語法
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...