mysql trigger

小记一下MySQL的Trigger,好久没有用了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#定义一个用来监测插入的Trigger
delimiter $
create trigger Add_Sprint_To_DB
after insert on AO_60DB71_SPRINT
for each row
Begin
set @times=now()-1;
set @num=(select count(*) from jira_sprint_change.Jira_Changes where Rapid_View_ID=new.RAPID_VIEW_ID and Sprint_Name = new.Name and create_date >= date_sub(now(),interval 1 day));
insert into jira_sprint_change.Jira_Changes (RID,Sprint_Name,Start_Date,End_Date,Complete_Date,Started,Rapid_View_ID,Sequence,Closed,Type) values (new.ID, if(@num >0,CONCAT(new.Name,'_',@times),new.Name), new.START_DATE, new.END_DATE, new.COMPLETE_DATE, new.STARTED, new.RAPID_VIEW_ID, new.SEQUENCE, new.CLOSED,1);
end$
delimiter ;


#Use for monitor sprint name changes
delimiter $
create trigger Modify_Sprint_To_DB
after update on AO_60DB71_SPRINT
for each row
Begin
if(old.name <> new.name)
then
set @OPTID=(select case when optionID IS NOT NULL then optionID else NULL end from jira_sprint_change.Jira_Changes where RID = old.ID and type = 1);
insert into jira_sprint_change.Jira_Changes (RID,Sprint_Name,Start_Date,End_Date,Complete_Date,Started,Rapid_View_ID,Sequence,Closed,Type,optionID) values (old.ID, new.NAME, new.START_DATE, new.END_DATE, new.COMPLETE_DATE, new.STARTED, new.RAPID_VIEW_ID, new.SEQUENCE, new.CLOSED,2,@OPTID);
end if;
end$
delimiter ;

#drop trigger Modify_Sprint_To_DB

#Use for monitor delete
delimiter $
create trigger Delete_Sprint_To_DB
after delete on AO_60DB71_SPRINT
for each row
Begin
set @OPTID=(select case when optionID IS NOT NULL then optionID else NULL end from jira_sprint_change.Jira_Changes where RID = old.ID and type = 1);
insert into jira_sprint_change.Jira_Changes (RID,Sprint_Name,Start_Date,End_Date,Complete_Date,Started,Rapid_View_ID,Sequence,Closed,Type,optionID) values (old.ID, old.NAME, old.START_DATE, old.END_DATE, old.COMPLETE_DATE, old.STARTED, old.RAPID_VIEW_ID, old.SEQUENCE, old.CLOSED,3,@OPTID);
end$
delimiter ;