Mysql觸發器

場景

基於某具體的DML語句的觸發或執行,來執行一個動做mysql

組成

  1. 監視誰
  2. 監視動做
  3. 觸發時間
  4. 觸發事件
delimiter $

create trigger <trigger>

before| after  -- 觸發時間
insert| update| delete -- 監視動做

on <table>  -- 監視誰

for each row 
begin

insert into <table2>(id, log , time) values ( new.id, 'xxx', now()); -- 觸發動做

end$

幾個語法

1.結束符 將結束符 ';' 置換爲 '$'sql

delimiter $

2.觸發時間code

before | after

before 指的是監視動做發生以前,執行觸發動做 after 指的是監視動做發生以前,執行觸發動做事件

3.new | oldit

-- insert update delete
old null 實際值 實際值
new 實際值 實際值 null

在觸發動做中,須要得到監視表的數據, mysql觸發器中, new、old用來表示監視動做發生以前和以後,監視表的數據table

進階-> 在觸發器中作條件判斷

create trigger <trigger>
before 
insert
on <table1>
for each row 
begin

select num into table2_num from <table2> where id = new.table2_id 

if new.column > table2_num then 
    set new.column = table2_num;
end if

update <table2> set num = new.column where id = new.table2_id; 

end$

命令

查看已有觸發器:
show triggers;

刪除已有觸發器:
drop trigger triggerName;

注意

同一張表只能建立一個觸發器date

相關文章
相關標籤/搜索