MYSQL數(shù)據(jù)庫觸發(fā)器怎么用

今天小編給大家分享一下MySQL數(shù)據(jù)庫觸發(fā)器怎么用的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

成都創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元錫林郭勒盟做網(wǎng)站,已為上家服務(wù),為錫林郭勒盟各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792

MYSQL數(shù)據(jù)庫觸發(fā)器怎么用

先了解一下觸發(fā)器,再來討論是否能完全代替外鍵

什么是觸發(fā)器?

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

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

如何在數(shù)據(jù)庫中建立觸發(fā)器

建立觸發(fā)器實例(關(guān)鍵詞:trigger)

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

先建立user表

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

MYSQL數(shù)據(jù)庫觸發(fā)器怎么用
建立觸發(fā)器

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

剛剛建立的觸發(fā)器(查看當(dāng)前數(shù)據(jù)庫下全部觸發(fā)器的代碼show triggers)
MYSQL數(shù)據(jù)庫觸發(fā)器怎么用
效果:向表中插入三個用戶名,自動生成三個ID

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

MYSQL數(shù)據(jù)庫觸發(fā)器怎么用
例二:再建立一個訂單表DD(訂單ID,商品名稱,用戶ID),建立一個觸發(fā)器tq1(當(dāng)刪除一個用戶時,該用戶的訂單也將刪除)
建表

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

MYSQL數(shù)據(jù)庫觸發(fā)器怎么用
建立觸發(fā)器

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

MYSQL數(shù)據(jù)庫觸發(fā)器怎么用

向表中添加兩條數(shù)據(jù)
MYSQL數(shù)據(jù)庫觸發(fā)器怎么用

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

delete from user WHERE name='張三'

MYSQL數(shù)據(jù)庫觸發(fā)器怎么用
MYSQL數(shù)據(jù)庫觸發(fā)器怎么用

觸發(fā)器能否完全代替外鍵

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

  • 與外鍵相比,觸發(fā)器的靈活性更高功能更多,可以執(zhí)行更多功能在一定程度上可以代替外鍵,實現(xiàn)外鍵的功能。

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

以上就是“MYSQL數(shù)據(jù)庫觸發(fā)器怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享標(biāo)題:MYSQL數(shù)據(jù)庫觸發(fā)器怎么用
轉(zhuǎn)載注明:http://muchs.cn/article36/piphsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、、搜索引擎優(yōu)化、定制網(wǎng)站用戶體驗、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司