MYSQL數據庫觸發器怎么用

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

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

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數據庫觸發器怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注創新互聯行業資訊頻道。

分享標題:MYSQL數據庫觸發器怎么用
轉載注明:http://m.kartarina.com/article36/piphsg.html

成都網站建設公司_創新互聯,為您提供定制開發搜索引擎優化定制網站用戶體驗網站改版

廣告

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

成都網頁設計公司
主站蜘蛛池模板: 亚洲日韩VA无码中文字幕| 麻豆AV无码精品一区二区| 无码中文人妻在线一区二区三区| 久久精品aⅴ无码中文字字幕不卡| 少妇伦子伦精品无码STYLES| 久久亚洲精品无码gv| 亚洲午夜福利AV一区二区无码| 日韩人妻无码中文字幕视频| 一级片无码中文字幕乱伦| 亚洲AV无码精品色午夜果冻不卡 | 亚洲av中文无码乱人伦在线播放 | 久久亚洲精品成人av无码网站 | 久久久久亚洲AV无码专区体验| 国产高清不卡无码视频| 久久久久久久无码高潮| 日韩无码系列综合区| 久久久久亚洲AV无码观看| 一本大道东京热无码一区| 亚洲Av无码国产情品久久| 亚洲综合无码一区二区痴汉| 国99精品无码一区二区三区| 国产高清无码视频| 成人免费无码大片a毛片软件 | 久久精品无码一区二区WWW| 久久国产三级无码一区二区| 日韩美无码五月天| 无码h黄肉3d动漫在线观看| 中文无码精品A∨在线观看不卡| 亚洲精品无码高潮喷水在线| 久99久无码精品视频免费播放 | HEYZO无码综合国产精品| 无码日韩人妻av一区免费| 亚洲午夜无码久久久久小说| 一夲道dvd高清无码| 精品人妻无码一区二区三区蜜桃一 | 久久天堂av综合色无码专区| 亚洲精品中文字幕无码A片老| 精品无码久久久久国产| 精品少妇无码AV无码专区| 777爽死你无码免费看一二区| 午夜不卡无码中文字幕影院|