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

首頁 > 數據庫 > MySQL > 正文

MySQL學習(十)

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

使用觸發器

觸發器是MySQL響應以下任意語句而自動執行的一條MySQL語句(或位于BEGIN和END語句之間的一組語句):

DELETEINSERTUPDATE

1.創建觸發器

需要給出:

    唯一的觸發器名;

    觸發器關聯的表;

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

    觸發器何時執行(處理之前或之后)。

觸發器用CREATE TRIGGER語句創建

create trigger newPRoduct after insert on productsfor each row select 'Product added';CREATE TRIGGER用來創建名為newproduct的新觸發器。觸發器可在一個操作發生之前或之后執行,這里給出了AFTER INSERT,所以此觸發器將在INSERT語句成功執行后執行。這個觸發器還指定FOREACH ROW,因此代碼對每個插入行執行。在這個例子中,文本Productadded將對每個插入的行顯示一次。

2.刪除觸發器使用DROP TRIGGER語句Drop Trigger newproduct;3.使用觸發器3.1 Insert觸發器在INSERT觸發器代碼內,可引用一個名為NEW的虛擬表,訪問被插入的行;在BEFORE INSERT觸發器中,NEW中的值也可以被更新(允許更改被插入的值);對于AUTO_INCREMENT列,NEW在INSERT執行之前包含0,在INSERT執行之后包含新的自動生成值。
create trigger neWorder after insert on ordersfor each row select New.order_num;然而這樣寫是錯的。。。not allowed to return set from trigger因為在MySQL的Trigger中不能出現Select* from table 的形式,這樣會返回結果集。可以使用Select..into..的形式
create trigger neworder after insert on ordersfor each row select New.order_num into @ee;
insert into orders(order_date,cust_id)values(Now(),10001);select @ee;這樣可以正常輸出3.2 Delete觸發器在DELETE觸發器代碼內,你可以引用一個名為OLD的虛擬表,訪問被刪除的行;OLD中的值全都是只讀的,不能更新。
DELIMITER //create trigger deleteorder before delete on ordersfor each rowbegin     insert into archive_orders(order_num,order_date,cst_id)     values(OLD.order_num,OLD.order_date,OLD.cust_id);end //DELIMITER ;使用OLD保存將要被刪除的行到一個存檔表中3.3 Updata觸發器在UPDATE觸發器代碼中,你可以引用一個名為OLD的虛擬表訪問以前(UPDATE語句前)的值,引用一個名為NEW的虛擬表訪問新更新的值;在BEFORE UPDATE觸發器中,NEW中的值可能也被更新(允許更改將要用于UPDATE語句中的值);OLD中的值全都是只讀的,不能更新。
create trigger updatevndors before update on vendorsfor each row        set NEW.vend_state =  Upper(NEW.vend_state);這個例子保證州名縮寫總是大寫


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 察隅县| 隆昌县| 南召县| 清水河县| 陇西县| 阜宁县| 庆安县| 赤城县| 伽师县| 柯坪县| 新昌县| 康乐县| 崇明县| 安岳县| 思茅市| 磴口县| 浑源县| 尤溪县| 鄂州市| 海宁市| 丹阳市| 新建县| 盐亭县| 潼关县| 云龙县| 平阳县| 碌曲县| 武汉市| 丰顺县| 宁武县| 巴林左旗| 莱阳市| 横峰县| 东阿县| 紫金县| 班戈县| 洪江市| 玛多县| 德安县| 松原市| 沁阳市|