91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL數據庫觸發器怎么建立

發布時間:2022-03-09 16:13:17 來源:億速云 閱讀:262 作者:iii 欄目:開發技術

本篇內容主要講解“MySQL數據庫觸發器怎么建立”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“MySQL數據庫觸發器怎么建立”吧!

什么是觸發器?

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

通俗的來講,觸發器就是一個觸發裝置,裝置里面存有一段操作。這個裝置有觸發條件,達到某個條件就會觸發這個裝置,觸發裝置就會執行存儲的一段操作。

如何在數據庫中建立觸發器

建立觸發器實例(關鍵詞:trigger)

例一:建立一個用戶表(用戶ID,用戶姓名),建立一個觸發器(當用戶表中插入數據時,自動生成一個全局唯一的ID)

先建立user表

create table user(
id int PRIMARY KEY,
name varchar(20)
);

MySQL數據庫觸發器怎么建立

建立觸發器

-- 建立觸發器名為tt
create TRIGGER tt
-- 觸發條件,向user表中插入數據時啟動觸發器
BEFORE insert on user
-- 檢查表中每一行,對新插入的數據進行操作
for EACH ROW
-- 執行操作
BEGIN 
set new.id=UUID();
END

剛剛建立的觸發器(查看當前數據庫下全部觸發器的代碼show triggers)

MySQL數據庫觸發器怎么建立

效果:向表中插入三個用戶名,自動生成三個ID

insert user(name) VALUE('張三'),('李四'),('王五')

MySQL數據庫觸發器怎么建立

例二:再建立一個訂單表DD(訂單ID,商品名稱,用戶ID),建立一個觸發器tq1(當刪除一個用戶時,該用戶的訂單也將刪除) 建表

create table DD(
ddid int PRIMARY KEY,
ddname VARCHAR(20),
userid VARCHAR(50)
)

MySQL數據庫觸發器怎么建立

建立觸發器

delimiter $
-- 建立觸發器名為tq
create TRIGGER tq1
-- 觸發條件,再dd表刪除數據之后啟動觸發器
AFTER DELETE on user
-- 檢查表中每一行,對新插入的數據進行操作
for EACH ROW
-- 執行操作
BEGIN  
DELETE FROM dd WHERE old.id=userid;
END $ 
delimiter ;

MySQL數據庫觸發器怎么建立

向表中添加兩條數據

MySQL數據庫觸發器怎么建立

效果:刪除user表中的用戶,dd表中的記錄也跟隨刪除 刪除張三

delete from user WHERE name='張三'

MySQL數據庫觸發器怎么建立

MySQL數據庫觸發器怎么建立

觸發器能否完全代替外鍵

  • 上面的例二如果用外鍵也可以實現同樣的效果,那么是不是說明外鍵可以做到的,觸發器都可以做到,外鍵做不到的觸發器也可以做到呢?

  • 與外鍵相比,觸發器的靈活性更高功能更多,可以執行更多功能在一定程度上可以代替外鍵,實現外鍵的功能。

  • 觸發器也可用于強制引用完整性,以便在多個表中添加、更新或刪除行時,保留在這些表之間所定義的關系。然而,強制引用完整性的最好方法是在相關表中定義主鍵和外鍵約束。如果使用數據庫關系圖,則可以在表之間創建關系以自動創建外鍵約束。

總結: 觸發器在某些時候可以代替外鍵,并不是在所有情況都可以代替。外鍵和觸發器也可以聯合使用

到此,相信大家對“MySQL數據庫觸發器怎么建立”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苍梧县| 若尔盖县| 大荔县| 防城港市| 静宁县| 道孚县| 祥云县| 井冈山市| 浦东新区| 治多县| 偃师市| 衡水市| 水城县| 阿拉善盟| 大理市| 时尚| 奉贤区| 丰顺县| 盈江县| 肃南| 古浪县| 安溪县| 渝北区| 武定县| 时尚| 麻阳| 曲水县| 龙岩市| 如皋市| 五河县| 洮南市| 北票市| 塔城市| 华池县| 永康市| 南和县| 宜良县| 许昌县| 时尚| 丹阳市| 芷江|