大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 淺談MySQL約束和觸發(fā)器的優(yōu)劣

淺談MySQL約束和觸發(fā)器的優(yōu)劣

更新時(shí)間:2021-01-13 17:06:42 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1358次

MySQL包含對(duì)觸發(fā)器的支持。觸發(fā)器是一種與表操作有關(guān)的數(shù)據(jù)庫對(duì)象,當(dāng)觸發(fā)器所在表上出現(xiàn)指定事件時(shí),將調(diào)用該對(duì)象,即表的操作事件觸發(fā)表上的觸發(fā)器的執(zhí)行。而MySQL中,約束是對(duì)表中的數(shù)據(jù)進(jìn)行限定,保證數(shù)據(jù)的正確性、有效性和完整性。MySQL約束和觸發(fā)器其實(shí)都和表有關(guān),下面我們就來比較一下MySQL約束和觸發(fā)器的優(yōu)劣

 

首先,不得不說,就MySQL數(shù)據(jù)庫而言,約束和觸發(fā)器在特殊情況下各有優(yōu)勢(shì)。

觸發(fā)器的主要好處在于它們可以包含使用 Transact-SQL 代碼的復(fù)雜處理邏輯。因此,觸發(fā)器可以支持約束的所有功能;但它在所給出的功能上并不總是最好的方法。實(shí)體完整性總應(yīng)在最低級(jí)別上通過索引進(jìn)行強(qiáng)制,這些索引或是 PRIMARY KEY 和 UNIQUE 約束的一部分,或是在約束之外獨(dú)立創(chuàng)建的。假設(shè)功能可以滿足應(yīng)用程序的功能需求,域完整性應(yīng)通過 CHECK 約束進(jìn)行強(qiáng)制,而引用完整性(RI) 則應(yīng)通過 FOREIGN KEY 約束進(jìn)行強(qiáng)制。在約束所支持的功能無法滿足應(yīng)用程序的功能要求時(shí),觸發(fā)器就極為有用。

 

例如:除非 REFERENCES 子句定義了級(jí)聯(lián)引用操作,否則 FOREIGN KEY 約束只能以與另一列中的值完全匹配的值來驗(yàn)證列值。CHECK 約束只能根據(jù)邏輯表達(dá)式或同一表中的另一列來驗(yàn)證列值。如果應(yīng)用程序要求根據(jù)另一個(gè)表中的列驗(yàn)證列值,則必須使用觸發(fā)器。約束只能通過標(biāo)準(zhǔn)的系統(tǒng)錯(cuò)誤信息傳遞錯(cuò)誤信息。如果應(yīng)用程序要求使用(或能從中獲益)自定義信息和較為復(fù)雜的錯(cuò)誤處理,則必須使用觸發(fā)器。

 

觸發(fā)器可通過數(shù)據(jù)庫中的相關(guān)表實(shí)現(xiàn)級(jí)聯(lián)更改;不過,通過級(jí)聯(lián)引用完整性約束可以更有效地執(zhí)行這些更改。觸發(fā)器可以禁止或回滾違反引用完整性的更改,從而取消所嘗試的數(shù)據(jù)修改。當(dāng)更改外鍵且新值與主鍵不匹配時(shí),此類觸發(fā)器就可能發(fā)生作用。例如,可以在 titleauthor.title_id 上創(chuàng)建一個(gè)插入觸發(fā)器,使它在新值與 titles.title_id 中的某個(gè)值不匹配時(shí)回滾一個(gè)插入。不過,通常使用 FOREIGN KEY 來達(dá)到這個(gè)目的。

 

如果觸發(fā)器表上存在約束,則在 INSTEAD OF 觸發(fā)器執(zhí)行后但在 AFTER 觸發(fā)器執(zhí)行前檢查這些約束。如果約束破壞,則回滾 INSTEAD OF 觸發(fā)器操作并且不執(zhí)行 AFTER 觸發(fā)器。觸發(fā)器到底可不可以在視圖上創(chuàng)建呢?在SQL Server™ 聯(lián)機(jī)叢書中,是沒有說觸發(fā)器不能在視圖上創(chuàng)建的,并且在語法解釋中表明:在 CREATE TRIGGER 的 ON 之后可以是視圖。 然而,事實(shí)似乎并不是如此,很多專家也說觸發(fā)器不能在視圖上創(chuàng)建。測(cè)試的結(jié)果也的確如此,不管是普通視圖還是索引視圖,都無法在上面創(chuàng)建觸發(fā)器,但真的是這樣嗎?

 

無可厚非的是:當(dāng)在臨時(shí)表或系統(tǒng)表上創(chuàng)建觸發(fā)器時(shí)會(huì)遭到拒絕。深刻理解FOR CREATE TRIGGER語句的FOR關(guān)鍵字之后可以跟INSERT、UPDATE、DELETE 中的一個(gè)或多個(gè),也就是說在其它情況下是不會(huì)觸發(fā)觸發(fā)器的,包括SELECT、TRUNCATE、WRITETEXT、UPDATETEXT。

 

在本站的MySQL教程中有對(duì)MySQL約束和觸發(fā)器的詳細(xì)講解,想要深入學(xué)習(xí)的小伙伴可以結(jié)合本文和教程中的學(xué)習(xí)資料,徹底梳理清MySQL數(shù)據(jù)庫中的約束和觸發(fā)器的紛紛擾擾。

 

 

 

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 一级片 在线播放 | 第一福利在线 | 奇米在线777在线视频 | 亚洲激情网| 精品国产91乱码一区二区三区 | 午夜色站 | 九九视频在线播放 | 亚洲精品视频免费观看 | 国产一区二区在线 |播放 | 99看片网 | 中文精品久久久久国产不卡 | 欧美在线视频播放 | se色成人亚洲综合 | 久热re在线视频精品免费 | 欧美色视频日本片高清在线观看 | 国产国产人免费观看在线视频 | 操操操网站| 欧美乱爱 | 国产精品成人免费综合 | 日韩欧美在线观看视频一区二区 | 小说区图片区综合久久亚洲 | 黄毛片 | 天天躁日日躁狠狠躁中文字幕 | aaa一级特黄 | 97视频久久 | 四虎影院在线免费 | 在线观看国产精美视频 | 一级特级aaaa毛片免费观看 | 亚洲a网| 国产理论视频在线观看 | 欧美人猛交日本人xxx | 乱在线伦视频免费 | 在线观看国产福利 | 日本制服丝袜在线 | 日本一级α一片免费视频 | 久久日韩精品中文字幕网 | 四虎影院久久久 | 亚洲精品麻豆一区二区 | 波多野结衣中文字幕一区 | 深夜在线观看网站 | 国产真实偷人视频在线播放 |