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

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

Mysql教程:MYSQL創(chuàng)建觸發(fā)程序

2024-07-24 13:00:37
字體:
來源:轉載
供稿:網(wǎng)友

剛剛弄懂了MYSQL的創(chuàng)建觸發(fā)程序。

語法: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ā)程序與TEMPORARY表或視圖關聯(lián)起來。

trigger_time是觸發(fā)程序的動作時間。它可以是BEFORE或AFTER,以指明觸發(fā)程序是在激活它的語句之前或之后觸發(fā)。

trigger_event指明了激活觸發(fā)程序的語句的類型。trigger_event可以是下述值之一:

· INSERT:將新行插入表時激活觸發(fā)程序,例如,通過INSERT、LOAD DATA和REPLACE語句。

· UPDATE:更改某一行時激活觸發(fā)程序,例如,通過UPDATE語句。

· DELETE:從表中刪除某一行時激活觸發(fā)程序,例如,通過DELETE和REPLACE語句。

請注意,trigger_event與以表操作方式激活觸發(fā)程序的SQL語句并不很類似,這點很重要。例如,關于INSERT的BEFORE觸發(fā)程序不僅能被INSERT語句激活,也能被LOAD DATA語句激活。

可能會造成混淆的例子之一是INSERT INTO .. ON DUPLICATE UPDATE ...語法:BEFORE INSERT觸發(fā)程序?qū)τ诿恳恍袑⒓せ?,后跟AFTER INSERT觸發(fā)程序,或BEFORE UPDATE和AFTER UPDATE觸發(fā)程序,具體情況取決于行上是否有重復鍵。

對于具有相同觸發(fā)程序動作時間和事件的給定表,不能有兩個觸發(fā)程序。例如,對于某一表,不能有兩個BEFORE UPDATE觸發(fā)程序。但可以有1個BEFORE UPDATE觸發(fā)程序和1個BEFORE INSERT觸發(fā)程序,或1個BEFORE UPDATE觸發(fā)程序和1個AFTER UPDATE觸發(fā)程序。

trigger_stmt是當觸發(fā)程序激活時執(zhí)行的語句。如果你打算執(zhí)行多個語句,可使用BEGIN ... END復合語句結構。這樣,就能使用存儲子程序中允許的相同語句。

使用別名OLD和NEW,能夠引用與觸發(fā)程序相關的表中的列。OLD.col_name在更新或刪除它之前,引用已有行中的1列。NEW.col_name在更新它之后引用將要插入的新行的1列或已有行的1列。

激活觸發(fā)程序時,對于觸發(fā)程序引用的所有OLD和NEW列,需要具有SELECT權限,對于作為SET賦值目標的所有NEW列,需要具有UPDATE權限。

注釋:目前,觸發(fā)程序不會被級聯(lián)的 外鍵動作激活。該限制將會被盡早放寬。

CREATE TRIGGER語句需要SUPER權限。

示例:

CREATE TRIGGER update_blogs AFTER INSERT ON blogs FOR EACH ROW

UPDATE blogcategory SET amount = amount + 1 WHERE cid = NEW.categoryid;

該語句創(chuàng)建了一個名為update_blogs的觸發(fā)程序,這個觸發(fā)程序在blogs表發(fā)生INSERT、LOAD DATA和REPLACE語句時執(zhí)行“UPDATE blogcategory SET amount = amount + 1 WHERE cid = NEW.categoryid;”

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 桐城市| 宽城| 平塘县| 华安县| 长治县| 桑日县| 乐至县| 师宗县| 丹阳市| 勃利县| 舟山市| 大邑县| 当雄县| 涪陵区| 岑溪市| 广汉市| 江西省| 大港区| 沙湾县| 微山县| 通辽市| 湖州市| 安吉县| 苍梧县| 水城县| 南京市| 台前县| 来宾市| 徐水县| 常熟市| 和田县| 海兴县| 屯留县| 博乐市| 灵寿县| 金堂县| 长宁县| 贡觉县| 玛曲县| 长宁县| 当阳市|