-----觸發器實現原理------
觸發器:triiger 實現為某張表綁定好一段代碼,當表中的默寫內容發生改變的時候(增刪查改)系統會自動觸發代碼,執行
觸發器的基本要素:事件類型,觸發時間 觸發對象
事件類型:增刪改 insert delete update
觸發時間:前后 before 和 after
觸發對象:表中的每一條記錄(行)
一張表中只能有一種觸發時間的一種類型的觸發器,最多一張表能有6個觸發器
觸發器創建事例:
首先創建表
①商品表:
create table my_goods(
id int primary key auto_increment,
name varchar(20) not null,
price decimal(10,2) default 1,
inv int comment '庫存數量')charset utf8;
②添加數據
insert into my_goods values(null,'iphone8',5399,100),(null,'vivoX20',8999,100);
③訂單表:
create table my_order(
id int primary key auto_increment,
g_id int not null comment '商品id',
g_number int comment '商品數量'
)charset utf8;
命令行運行建表
--觸發器:訂單生成一個,商品庫存減少一個
--臨時修改語句結束符
delimiter $$
create triiger after_order after insert on my_order for each row
begin --觸發器內容
update my_goods set inv=inv-1 where id=2;
end --觸發器結束
$$
delimiter ;
命令行運行 創建觸發器成功 = =
=
查看觸發器:
show triggers;
show triggers\G;
查看觸發器創建語句:
show create trigger 觸發器名稱(eg:after_order\G)
注:所有的觸發器都存儲在一張表中 information_shema.triggers
select * from information_shema.trigger\G