mysql觸發器例項

2021-09-10 13:19:56 字數 2469 閱讀 9330

提前祝大家新年快樂,諸事順利!

接下來,記錄一些mysql觸發器的簡單例項。

history 全部指標記錄表

self_kpi kpi指標參照表

self_kpi_history kpi指標記錄表

三表itemid相同

判斷history的新增資料是否是kpi指標,如果是就將資料新增到self_kpi_history,反之則不新增。

**如下:

delimiter || 

drop trigger if exists tri_kpi_history ||

create trigger tri_kpi_history

after insert on history

for each row

begin

if exists

(select 1 from self_kpi where self_kpi.itemid = new.itemid ) then

insert into self_kpi_history(itemid,clock,`value`,ns)

values (new.itemid,new.clock,new.`value`,new.ns);

end if;

end||

delimiter ;

self_kpi_history表

新增了name和hostid欄位,要求新增資料時,插入新增欄位的值。(這個描述應該可以的吧)

**如下:

delimiter || 

drop trigger if exists tri_self_kpi_history ||

create trigger tri_self_kpi_history

before insert on self_kpi_history

for each row

begin

declare name varchar(100);

declare hostid bigint(20);

set name = (select self_kpi.item_name from self_kpi where self_kpi.itemid = new.itemid);

set hostid = (select items.hostid from items where items.itemid = new.itemid);

set new.name = name;

set new.hostid = hostid;

end||

delimiter ;

self_kpi_history

self_weight_grade

判斷kpi指標值在哪個區間,並把分數插入相應的表中。

**如下:

delimiter ||

drop trigger if exists tri_self_kpi_grade ||

create trigger tri_self_kpi_grade

after insert on self_kpi_history

for each row

begin

if(new.name like '%使用率%') then

insert into self_weight_grade(mc,qzf,clsj)

values (new.itemid,case when new.value <= 10 then 90 when new.`value` <= 30 then 80 when new.`value` <= 60 then 60 when new.`value` >60 then 20 end,now());

elseif(new.name like '%可用率%') then

insert into self_weight_grade(mc,qzf,clsj)

values (new.itemid,case when new.value >= 90 then 90 when new.`value` >= 70 then 80 when new.`value` >= 40 then 60 when new.`value` <40 then 20 end,now());

end if;

end||

delimiter ;

先寫這三個吧,做個筆記,加深一下記憶。。。

mysql條件觸發器例項 mysql觸發器例項一則

例子,例項學習mysql觸發器的用法。一,準備二張測試表 1,測試表1 複製 示例 drop table if exists test create table test id bigint 11 unsigned not null auto increment,name varchar 100 n...

mysql觸發器例項

mysql從5.0開始支援觸發器 語法 create trigger 觸發器名稱 on 表名稱 for each row 觸發器sql語句 注意 在mysql中現在還不支援利用call來呼叫儲存過程 示例 比如有論壇的版塊表和文章表,乙個版塊中有多篇文章,在版塊表中有乙個字段用來記錄版塊下的文章數。...

mysql觸發器例項

有乙個學生管理程式,涉及到學生的證書,在這個程式裡,學生可以自己新增乙個或多個證書,把自己的證書資訊新增到系統裡,之後管理員對這些資訊進行審核,確定證書的真實性。當學員的所有證書都審核通過後,學員的狀態就會變為誠信,反之,只要有乙個證書沒有審核通過,學員狀態就變為非誠信。或者是學員又重新上傳了乙個證...