MySQL delete觸發器(刪除)用法詳解

巴扎黑
發布: 2019-02-22 15:42:06
原創
23712 人瀏覽過

DELETE觸發器

觸發器(trigger)是SQL server 提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發,例如當對一個表進行操作( insert,delete, update)時就會激活它執行。觸發器經常用於加強資料的完整性約束和業務規則等。 觸發器可以從 DBA_TRIGGERS ,USER_TRIGGERS 資料字典中查到。 SQL3的觸發器是一個能由系統自動執行對資料庫修改的語句。

相關mysql影片教學推薦:《mysql教學

#觸發器可以查詢其他表,而且可以包含複雜的SQL語句。它們主要用於強制服從複雜的業務規則或要求。例如:您可以根據客戶目前的帳戶狀態,控制是否允許插入新訂單。

DELETE 觸發器在 DELETE 語句執行之前或之後執行。 需要知道以下兩點:

1.在DELETE 觸發器程式碼內,你可以引用一個名為OLD 的虛擬表,存取被刪除的行;

2.OLD 中的值全都是唯讀的,不能更新。下面的範例示範使用 OLD 儲存將要刪除的行到一個檔案表中:

輸入:

create trigger deleteorder before delete on orders for each row
begin
insert into archive_orders(order_num,order_date,cust_id)
values(old.order_num,old.order_date,old.cust_id);
end;
登入後複製

分析:在任意訂單被刪除前將執行此觸發器。它使用一條INSERT 語句將OLD 中的值(要被刪除的訂單)保存到一個名為archive_orders 的存檔表中(為實際使用這個例子,你需要用與orders 相同的列建立一個名為archive_orders 的表) 。

使用 BEFORE DELETE 觸發器的優點(相對於 AFTER DELETE 觸發器來說)為,如果由於某種原因,訂單不能存檔, DELETE 本身將被放棄。

多語句觸發器 如所見,觸發器 deleteorder 使用 BEGIN 和END 語句標記觸發器體。這在此例子中並不是必需的,不過也沒有害處。使用 BEGIN END 區塊的好處是觸發器能容納多條SQL語句(在 BEGIN END區塊 中一條挨著一條)。

【相關推薦】

1. mysql免費影片教學

#2. MySQL中insert觸發器(插入)詳解

3. mysql觸發器簡介及如何建立和刪除觸發器

#4. MySQL使用字元集和校對順序使用教學

#5. MySQL字元集與校對順序簡介

以上是MySQL delete觸發器(刪除)用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!