一千行MySQL學習筆記(八)

來源:互聯網
上載者:User

標籤:

/* 觸發器 */ ------------------

觸發程式是與表有關的命名資料庫物件,當該表出現特定事件時,將啟用該對象監聽:記錄的增加、修改、刪除。

-- 建立觸發器

CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
參數:

trigger_time
是觸發程式的動作時間。它可以是 before 或 after,以指明觸發程式是在啟用它的語句之前或之後觸發。
trigger_event
指明了啟用觸發程式的語句的類型
INSERT:將新行插入表時啟用觸發程式
UPDATE:更改某一行時啟用觸發程式
DELETE:從表中刪除某一行時啟用觸發程式
tbl_name:監聽的表,必須是永久性的表,不能將觸發程式與TEMPORARY表或視圖關聯起來。
trigger_stmt
:當觸發程式啟用時執行的語句。執行多個語句,可使用BEGIN...END複合陳述式結構

-- 刪除

DROP TRIGGER [schema_name.]trigger_name可以使用old和new代替舊的和新的資料 更新操作,更新前是old,更新後是new. 刪除操作,只有old. 增加操作,只有new.

-- 注意
1. 對於具有相同觸發程式動作時間和事件的給定表,不能有兩個觸發程式。

-- 字元串連函數

concat(str1[, str2,...])

-- 分支語句

if 條件 then 執行語句elseif 條件 then 執行語句
else 執行語句
end if;

-- 修改最外層語句結束符
delimiter 自訂結束符號 SQL語句自訂結束符號delimiter ; -- 修改回原來的分號

-- 語句塊包裹

begin 語句塊
end

-- 特殊的執行

1. 只要添加記錄,就會觸發程式。
2. Insert into on duplicate key update 文法會觸發: 如果沒有重複記錄,會觸發 before insert, after insert; 如果有重複記錄並更新,會觸發 before insert, before update, after update; 如果有重複記錄但是沒有發生更新,則觸發 before insert, before update
3. Replace 文法 如果有記錄,則執行 before insert, before delete, after delete, after insert
(未完待續) 

         (Shocker 來源:http://www.cnblogs.com/shockerli/p/1000-plus-line-mysql-notes.html)

一千行MySQL學習筆記(八)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.