語法如下:
創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設計、成都做網(wǎng)站、成都網(wǎng)站建設、成都外貿(mào)網(wǎng)站建設、電子商務、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務。公司擁有豐富的網(wǎng)站建設和互聯(lián)網(wǎng)應用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設計師團隊。
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
觸發(fā)程序是與表有關的命名數(shù)據(jù)庫對象,當表上出現(xiàn)特定事件時,將激活該對象。
觸發(fā)程序與命名為tbl_name的表相關。tbl_name必須引用永久性表。不能將觸發(fā)程序與臨時表表或視圖關聯(lián)起來。
trigger_time是觸發(fā)程序的動作時間。它可以是BEFORE或AFTER,以指明觸發(fā)程序是在激活它的語句之前或之后觸發(fā)。
trigger_event指明了激活觸發(fā)程序的語句的類型。trigger_event可以是下述值之一:
· INSERT:將新行插入表時激活觸發(fā)程序,例如,通過INSERT、LOAD DATA和REPLACE語句
語法說明如下。
1) 觸發(fā)器名
觸發(fā)器的名稱,觸發(fā)器在當前數(shù)據(jù)庫中必須具有唯一的名稱。如果要在某個特定數(shù)據(jù)庫中創(chuàng)建,名稱前面應該加上數(shù)據(jù)庫的名稱。
2) INSERT | UPDATE | DELETE
觸發(fā)事件,用于指定激活觸發(fā)器的語句的種類。
注意:三種觸發(fā)器的執(zhí)行時間如下。INSERT:將新行插入表時激活觸發(fā)器。例如,INSERT 的 BEFORE 觸發(fā)器不僅能被 MySQL 的 INSERT 語句激活,也能被 LOAD DATA 語句激活。DELETE: 從表中刪除某一行數(shù)據(jù)時激活觸發(fā)器,例如 DELETE 和 REPLACE 語句。UPDATE:更改表中某一行數(shù)據(jù)時激活觸發(fā)器,例如 UPDATE 語句。
3) BEFORE | AFTER
BEFORE 和 AFTER,觸發(fā)器被觸發(fā)的時刻,表示觸發(fā)器是在激活它的語句之前或之后觸發(fā)。若希望驗證新數(shù)據(jù)是否滿足條件,則使用 BEFORE 選項;若希望在激活觸發(fā)器的語句執(zhí)行之后完成幾個或更多的改變,則通常使用 AFTER 選項。
4) 表名
與觸發(fā)器相關聯(lián)的表名,此表必須是永久性表,不能將觸發(fā)器與臨時表或視圖關聯(lián)起來。在該表上觸發(fā)事件發(fā)生時才會激活觸發(fā)器。同一個表不能擁有兩個具有相同觸發(fā)時刻和事件的觸發(fā)器。例如,對于一張數(shù)據(jù)表,不能同時有兩個 BEFORE UPDATE 觸發(fā)器,但可以有一個 BEFORE UPDATE 觸發(fā)器和一個 BEFORE INSERT 觸發(fā)器,或一個 BEFORE UPDATE 觸發(fā)器和一個 AFTER UPDATE 觸發(fā)器。
5) 觸發(fā)器主體
觸發(fā)器動作主體,包含觸發(fā)器激活時將要執(zhí)行的 MySQL 語句。如果要執(zhí)行多個語句,可使用 BEGIN…END 復合語句結構。
數(shù)據(jù)庫觸發(fā)器有下面的作用:
1.安全性。能夠基于數(shù)據(jù)庫的值使用戶具有操作數(shù)據(jù)庫的某種權利。
# 能夠基于時間限制用戶的操作,比如不同意下班后和節(jié)假日改動數(shù)據(jù)庫數(shù)據(jù)。
2.審計。能夠跟蹤用戶對數(shù)據(jù)庫的操作。???
# 審計用戶操作數(shù)據(jù)庫的語句。
# 把用戶對數(shù)據(jù)庫的更新寫入審計表。
3.實現(xiàn)復雜的數(shù)據(jù)完整性規(guī)則
# 實現(xiàn)非標準的數(shù)據(jù)完整性檢查和約束。觸發(fā)器可產(chǎn)生比規(guī)則更為復雜的限制。與規(guī)則不同,觸發(fā)器能夠引用列或數(shù)據(jù)庫對象。比如,觸發(fā)器可回退不論什么企圖吃進超過自己保證金的期貨。
# 提供可變的缺省值。
4.實現(xiàn)復雜的非標準的數(shù)據(jù)庫相關完整性規(guī)則。觸發(fā)器能夠對數(shù)據(jù)庫中相關的表進行連環(huán)更新。比如,在auths表author_code列上的刪除觸發(fā)器可導致對應刪除在其他表中的與之匹配的行。
# 在改動或刪除時級聯(lián)改動或刪除其他表中的與之匹配的行。
# 在改動或刪除時把其他表中的與之匹配的行設成NULL值。
# 在改動或刪除時把其他表中的與之匹配的行級聯(lián)設成缺省值。
# 觸發(fā)器可以拒絕或回退那些破壞相關完整性的變化,取消試圖進行數(shù)據(jù)更新的事務。當插入一個與其主健不匹配的外部鍵時,這樣的觸發(fā)器會起作用。比如,可以在books.author_code?列上生成一個插入觸發(fā)器,假設新值與auths.author_code列中的某值不匹配時,插入被回退。
5.同步實時地復制表中的數(shù)據(jù)。
6.自己主動計算數(shù)據(jù)值,假設數(shù)據(jù)的值達到了一定的要求,則進行特定的處理
名稱欄目:mysql的觸發(fā)器怎么用,mysql觸發(fā)器菜鳥教程
文章出自:http://jinyejixie.com/article34/dsdgope.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站導航、網(wǎng)站設計、網(wǎng)站策劃、面包屑導航、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)