明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

mysql觸發(fā)器簡介及如何創(chuàng)建與刪除觸發(fā)器

[摘要]什么是mysql觸發(fā)器需要MySQL 5 對觸發(fā)器的支持是在MySQL 5中增加的。因此,本章內(nèi)容適用于MySQL 5或之后的版本。MySQL語句在需要時被執(zhí)行,存儲過程也是如此。但是,如果你想要某條語句(或某些語句)在事件發(fā)生時自動執(zhí)行,怎么辦呢?例如:1.每當增加一個顧客到某個數(shù)據(jù)庫表時,都檢...
什么是mysql觸發(fā)器

需要MySQL 5 對觸發(fā)器的支持是在MySQL 5中增加的。因此,本章內(nèi)容適用于MySQL 5或之后的版本。

MySQL語句在需要時被執(zhí)行,存儲過程也是如此。但是,如果你想要某條語句(或某些語句)在事件發(fā)生時自動執(zhí)行,怎么辦呢?例如:

1.每當增加一個顧客到某個數(shù)據(jù)庫表時,都檢查其電話號碼格式是否正確,州的縮寫是否為大寫;

2.每當訂購一個產(chǎn)品時,都從庫存數(shù)量中減去訂購的數(shù)量;

3.無論何時刪除一行,都在某個存檔表中保留一個副本。

所有這些例子的共同之處是它們都需要在某個表發(fā)生更改時自動處理。這確切地說就是觸發(fā)器。觸發(fā)器是MySQL響應以下任意語句而自動執(zhí)行的一條MySQL語句(或位于 BEGIN 和 END 語句之間的一組語句):

1.DELETE ;

2.INSERT ;

3.UPDATE 。

其他MySQL語句不支持觸發(fā)器。


創(chuàng)建mysql觸發(fā)器

在創(chuàng)建觸發(fā)器時,需要給出4條信息:

1.唯一的觸發(fā)器名;

2.觸發(fā)器關聯(lián)的表;

3.觸發(fā)器應該響應的活動( DELETE 、 INSERT 或 UPDATE );

4.觸發(fā)器何時執(zhí)行(處理之前或之后)。

保持每個數(shù)據(jù)庫的觸發(fā)器名唯一 在MySQL 5中,觸發(fā)器名必須在每個表中唯一,但不是在每個數(shù)據(jù)庫中唯一。這表示同一數(shù)據(jù)庫中的兩個表可具有相同名字的觸發(fā)器。這在其他每個數(shù)據(jù)庫觸發(fā)器名必須唯一的DBMS中是不允許的,而且以后的MySQL版本很可能會使命名規(guī)則更為嚴格。因此,現(xiàn)在最好是在數(shù)據(jù)庫范圍內(nèi)使用唯一的觸發(fā)器名。

觸發(fā)器用 CREATE TRIGGER 語句創(chuàng)建。下面是一個簡單的例子:

輸入:

create trigger newproduct after insert on proucts for each row select 'product added';

分析:CREATE TRIGGER 用來創(chuàng)建名為 newproduct 的新觸發(fā)器。觸發(fā)器可在一個操作發(fā)生之前或之后執(zhí)行,這里給出了 AFTER INSERT ,所以此觸發(fā)器將在 INSERT 語句成功執(zhí)行后執(zhí)行。這個觸發(fā)器還指定 FOR EACH ROW ,因此代碼對每個插入行執(zhí)行。在這個例子中,文本 Product added 將對每個插入的行顯示一次。為了測試這個觸發(fā)器,使用 INSERT 語句添加一行或多行到 products

中,你將看到對每個成功的插入,顯示 Product added 消息。

僅支持表 只有表才支持觸發(fā)器,視圖不支持(臨時表也不支持)。

觸發(fā)器按每個表每個事件每次地定義,每個表每個事件每次只允許一個觸發(fā)器。因此,每個表最多支持6個觸發(fā)器(每條 INSERT 、 UPDATE和 DELETE 的之前和之后)。單一觸發(fā)器不能與多個事件或多個表關聯(lián),所以,如果你需要一個對 INSERT 和 UPDATE 操作執(zhí)行的觸發(fā)器,則應該定義

兩個觸發(fā)器。

觸發(fā)器失敗 如果 BEFORE 觸發(fā)器失敗,則MySQL將不執(zhí)行請求的操作。此外,如果 BEFORE 觸發(fā)器或語句本身失敗,MySQL將不執(zhí)行 AFTER 觸發(fā)器(如果有的話)。

刪除mysql觸發(fā)器

現(xiàn)在,刪除觸發(fā)器的語法應該很明顯了。為了刪除一個觸發(fā)器,可使用 DROP TRIGGER 語句,如下所示:

輸入:

drop trigger newproduct ;

分析:觸發(fā)器不能更新或覆蓋。為了修改一個觸發(fā)器,必須先刪除它,然后再重新創(chuàng)建。

【相關推薦】

1. mysql免費視頻教程

2. MySQL使用字符集和校對順序使用教程

3. MySQL字符集和校對順序簡介

4. MySQL事務-使用保留點、更改默認的提交行為詳解

5. MySQL事務-ROLLBACK,COMMIT用法詳解

以上就是mysql觸發(fā)器簡介及如何創(chuàng)建和刪除觸發(fā)器的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。