顧名思義,觸發就是滿足一定條件下產生什麼動作,完整的定義是觸發器是與表有關的資料庫物件,在滿足定義條件時觸發,並執行觸發器中定義的語句集合。
1create
trigger trigger_name trigger_time trigger_event on tb_name for each row trigger_stmt
trigger_name:觸發器的名稱
tirgger_time:觸發時機,為before或者after
trigger_event:觸發事件,為insert、delete或者update
tb_name:表示建立觸發器的表明,就是在哪張表上建立觸發器
trigger_stmt:觸發器的程式體,可以是一條sql語句或者是用begin和end包含的多條語句
可以說mysql建立以下六種觸發器: before insert,before delete,before update after insert,after delete,after update
1//題目:構造乙個觸發器audit_log,在向employees_test表中插入一條資料的時候,觸發插入相關的資料到audit中。23
create
table
employees_test(
4 id int
primary
keynot
null
,5 name text
notnull
, 6 age int
notnull
,7 address char(50
), 8 salary real9);
1011
create
table
audit(
12 emp_no int
notnull
, 13 name text
notnull
14 );
1create
trigger audit_log after insert
on employees_test for each row begin
2insert
into audit values
(new.id, new.name);
3end
mysql 中定義了 new 和 old,用來表示 觸發器的所在表中,觸發了觸發器的那一行資料。
具體的例子如下:
在 insert 型觸發器中,new 用來表示將要(before)或已經(after)插入的新資料;
在 update 型觸發器中,old 用來表示將要或已經被修改的原資料,new 用來表示將要或已經修改為的新資料;
在 delete 型觸發器中,old 用來表示將要或已經被刪除的原資料;
使用方法: new.columnname (columnname 為相應資料表某一列名)
begin與end之間的執行語句列表引數表示需要執行的多個語句,不同語句用分號隔開
tips:一般情況下,mysql預設是以 ; 作為結束執行語句,與觸發器中需要的分行起衝突
為解決此問題可用delimiter,如:delimiter ||,可以將結束符號變成||
當觸發器建立完成後,可以用delimiter ;來將結束符號變成;
1 delimiter ||2create
trigger audit_log after insert
on employees_test for each row begin
3insert
into audit values
(new.id, new.name);4//
其他語句
5end
6 delimiter ;
觸發器 mysql觸發器
觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...
my sql 觸發器 mysql建立觸發器
首先,我們來了解一下什麼是觸發器,觸發器,就是在對一張表資料進行增 insert 刪 delete 改 update 的時候,為了保持資料的一致性,對別的表也要進行相應的資料修改。我們都知道mysql最後事務提交後,資料是會儲存到磁碟上的,那麼每次在insert,delete,update時候舊資料...
my sql 觸發器 MySQL檢視觸發器
檢視觸發器是指檢視資料庫中已經存在的觸發器的定義 狀態和語法資訊等。mysql 中檢視觸發器的方法包括 show triggers 語句和查詢 information schema 資料庫下的 triggers 資料表等。本節將詳細介紹這兩種檢視觸發器的方法。show triggers語句檢視觸發器...