日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MYSQL:基础——触发器

發布時間:2023/12/10 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MYSQL:基础——触发器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MYSQL基礎——觸發器

引入觸發器

什么是觸發器

如果你想要某條語句(或某些語句)在事件發生時自動執行。比如:?每當訂購一個產品時,都從庫存數量中減去訂購的數量;無論何時刪除一行,都在某個存檔表中保留一個副本。就需要用到觸發器。觸發器是MySQL響應以下任意語句而自動執行的一條MySQL語句(或位于BEGIN和END語句之間的一組語句):

? DELETE;
? INSERT;
? UPDATE;

說明:

  其他MySQL語句不支持觸發器。只有表才支持觸發器、視圖不支持,臨時表也不支持。

創建觸發器

觸發器用CREATE TRIGGER 語句創建,一條偽代碼如下

CREATE TRIGGER newType AFTER INSERT ON ms_articletype for each row select 'Product Added'; Error Code: 1415. Not allowed to return a result set from a trigger?

創建一個觸發器需要給出4條信息:

  • 唯一的觸發器名 newType
  • 觸發器關聯的表 ms_articletype
  • 觸發器應該響應的活動 DELETE、INSERT、UPDATE
  • 觸發器何時執行(AFTER、BEFORE)?
  • 刪除觸發器:

    觸發器不支持更新或者覆蓋,為了修改一個觸發器,必須先刪除它,然后重新創建它。

    DROP TRIGGER newtype;

    使用觸發器

    INSERT觸發器

    INSERT觸發器在INSERT語句執行之前或者之后執行,需要知道以下幾點:

  • 在INSERT觸發器代碼內,可引用一個名為NEW的虛擬表,訪問被插入的行
  • 在BEFORE INSERT觸發器中,NEW中的值也可以被更新(允許更改被插入的值)。即,通過NEW來修改被插入的數據。
  • 對于AUTO_INCRMENT列,NEW在INSERT執行之前包含0,在執行之后包含新的自動生成值。?
  • 實例:

      

    DELETE觸發器

    說明:

  • 在DELETE觸發器代碼內,你可以引用一個名為OLD的虛擬表,訪問被刪除的行。
  • OLD表中的數據全是只讀的,不能被修改。  
  • 實例:

      

    UPDATE觸發器

    說明:

  • 在UPDATE中,你可以使用OLD和NEW兩張表。
  • 在BEFORE UPDATE觸發器中,NEW中的值可能也被更新(允許更改將要用于UPDATE語句中的值)
  • OLD表中的值是只讀的,不可以被更改。
  • 實例:

        

    ?退貨實例

    CREATE TRIGGER updateGoods AFTER UPDATE ON ms_sale for each row update ms_order SET or_number=or_number+(OLD.sale_number-NEW.sale_number) WHERE or_id=OLD.sale_or_id;

    ?

    轉載于:https://www.cnblogs.com/MrSaver/p/8012137.html

    總結

    以上是生活随笔為你收集整理的MYSQL:基础——触发器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。