国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql觸發器(Trigger)簡明總結和使用實例

2024-07-24 12:47:28
字體:
來源:轉載
供稿:網友

一,什么觸發器

1,個人理解
觸發器,從字面來理解,一觸即發的一個器,簡稱觸發器(哈哈,個人理解),舉個例子吧,好比天黑了,你開燈了,你看到東西了。你放炮仗,點燃了,一會就炸了。
2,官方定義
觸發器(trigger)是個特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發,比如當對一個表進行操作( insert,delete, update)時就會激活它執行。觸發器經常用于加強數據的完整性約束和業務規則等。 觸發器可以從 DBA_TRIGGERS ,USER_TRIGGERS 數據字典中查到。
觸發器有一個非常好的特性就是:觸發器可以禁止或回滾違反引用完整性的更改,從而取消所嘗試的數據修改。
什么意思,舉個例子解釋一下,街機游戲大家都玩過吧,闖過一關,闖下一關,有一關沒闖過就要從第一關開始。觸發器根這個類似。
官方解釋如下
觸發程序視為單一交易中的一部份,因此可以由原觸發程序還原交易,如果在交易過程中偵測到嚴重的錯誤(如使用者中斷連線),則會自動還原整個交易。
他的作用很明顯了,可以保重數據的完整性,下面有一個實例來說明他的好處,以及如果使編寫代碼不那么復雜

二,觸發器語法

復制代碼 代碼如下:

CREATE TRIGGER trigger_name trigger_time trigger_event
    ON tbl_name FOR EACH ROW trigger_stmt

觸發程序是與表有關的命名數據庫對象,當表上出現特定事件時,將激活該對象。
觸發程序與命名為tbl_name的表相關。tbl_name必須引用永久性表。不能將觸發程序與TEMPORARY表或視圖關聯起來。
trigger_time是觸發程序的動作時間。它可以是BEFORE或AFTER,以指明觸發程序是在激活它的語句之前或之后觸發。
trigger_event指明了激活觸發程序的語句的類型。trigger_event可以是下述值之一:
·         INSERT:將新行插入表時激活觸發程序,例如,通過INSERT、LOAD DATA和REPLACE語句。
·         UPDATE:更改某一行時激活觸發程序,例如,通過UPDATE語句。
·         DELETE:從表中刪除某一行時激活觸發程序,例如,通過DELETE和REPLACE語句。
請注意,trigger_event與以表操作方式激活觸發程序的SQL語句并不很類似,這點很重要。例如,關于INSERT的BEFORE觸發程序不僅能被INSERT語句激活,也能被LOAD DATA語句激活。
可能會造成混淆的例子之一是INSERT INTO .. ON DUPLICATE UPDATE ...語法:BEFORE INSERT觸發程序對于每一行將激活,后跟AFTER INSERT觸發程序,或BEFORE UPDATE和AFTER UPDATE觸發程序,具體情況取決于行上是否有重復鍵。
對于具有相同觸發程序動作時間和事件的給定表,不能有兩個觸發程序。例如,對于某一表,不能有兩個BEFORE UPDATE觸發程序。但可以有1個BEFORE UPDATE觸發程序和1個BEFORE INSERT觸發程序,或1個BEFORE UPDATE觸發程序和1個AFTER UPDATE觸發程序。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孟津县| 成武县| 南平市| 马鞍山市| 石门县| 永修县| 红原县| 柳河县| 达日县| 大同市| 慈利县| 陇南市| 岗巴县| 博湖县| 安仁县| 胶南市| 台湾省| 延安市| 古蔺县| 铁力市| 武功县| 平顶山市| 孝昌县| 彩票| 开封市| 广东省| 同德县| 漾濞| 珠海市| 和静县| 仙居县| 乐陵市| 莱阳市| 南汇区| 大渡口区| 将乐县| 日喀则市| 惠安县| 抚远县| 黔东| 凤翔县|