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

首頁 > 數據庫 > MySQL > 正文

MySQL觸發器使用詳解

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

MySQL包含對觸發器的支持。觸發器是一種與表操作有關的數據庫對象,當觸發器所在表上出現指定事件時,將調用該對象,即表的操作事件觸發表上的觸發器的執行。

創建觸發器
在MySQL中,創建觸發器語法如下:

復制代碼 代碼如下:

CREATE TRIGGER trigger_name
trigger_time
trigger_event ON tbl_name
FOR EACH ROW
trigger_stmt

其中:

trigger_name:標識觸發器名稱,用戶自行指定;
trigger_time:標識觸發時機,取值為 BEFORE 或 AFTER;
trigger_event:標識觸發事件,取值為 INSERT、UPDATE 或 DELETE;
tbl_name:標識建立觸發器的表名,即在哪張表上建立觸發器;
trigger_stmt:觸發器程序體,可以是一句SQL語句,或者用 BEGIN 和 END 包含的多條語句。

由此可見,可以建立6種觸發器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。

另外有一個限制是不能同時在一個表上建立2個相同類型的觸發器,因此在一個表上最多建立6個觸發器。

trigger_event 詳解
MySQL 除了對 INSERT、UPDATE、DELETE 基本操作進行定義外,還定義了 LOAD DATA 和 REPLACE 語句,這兩種語句也能引起上述6中類型的觸發器的觸發。

LOAD DATA 語句用于將一個文件裝入到一個數據表中,相當與一系列的 INSERT 操作。

REPLACE 語句一般來說和 INSERT 語句很像,只是在表中有 primary key 或 unique 索引時,如果插入的數據和原來 primary key 或 unique 索引一致時,會先刪除原來的數據,然后增加一條新數據,也就是說,一條 REPLACE 語句有時候等價于一條。

INSERT 語句,有時候等價于一條 DELETE 語句加上一條 INSERT 語句。

INSERT 型觸發器:插入某一行時激活觸發器,可能通過 INSERT、LOAD DATA、REPLACE 語句觸發;
UPDATE 型觸發器:更改某一行時激活觸發器,可能通過 UPDATE 語句觸發;
DELETE 型觸發器:刪除某一行時激活觸發器,可能通過 DELETE、REPLACE 語句觸發。

BEGIN … END 詳解
在MySQL中,BEGIN … END 語句的語法為:

BEGIN
[statement_list]
END
其中,statement_list 代表一個或多個語句的列表,列表內的每條語句都必須用分號(;)來結尾。
而在MySQL中,分號是語句結束的標識符,遇到分號表示該段語句已經結束,MySQL可以開始執行了。因此,解釋器遇到statement_list 中的分號后就開始執行,然后會報出錯誤,因為沒有找到和 BEGIN 匹配的 END。

這時就會用到 DELIMITER 命令(DELIMITER 是定界符,分隔符的意思),它是一條命令,不需要語句結束標識,語法為:
DELIMITER new_delemiter
new_delemiter 可以設為1個或多個長度的符號,默認的是分號(;),我們可以把它修改為其他符號,如$:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中山市| 福清市| 剑川县| 北安市| 得荣县| 新安县| 佛山市| 黄平县| 武乡县| 香格里拉县| 城步| 台东县| 亳州市| 昭觉县| 阳信县| 齐河县| 应用必备| 历史| 荥经县| 巴林右旗| 漠河县| 都江堰市| 志丹县| 新乡市| 星子县| 关岭| 吴江市| 内黄县| 黑龙江省| 潞城市| 安吉县| 微山县| 绥宁县| 惠安县| 临邑县| 旺苍县| 阿拉善右旗| 志丹县| 改则县| 兰州市| 绵阳市|