久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

共計(jì) 1568 個(gè)字符,預(yù)計(jì)需要花費(fèi) 4 分鐘才能閱讀完成。

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

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

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

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

如何在數(shù)據(jù)庫(kù)中建立觸發(fā)器建立觸發(fā)器實(shí)例(關(guān)鍵詞:trigger)

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

先建立 user 表

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

建立觸發(fā)器

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

剛剛建立的觸發(fā)器(查看當(dāng)前數(shù)據(jù)庫(kù)下全部觸發(fā)器的代碼 show triggers)

效果:向表中插入三個(gè)用戶名,自動(dòng)生成三個(gè) ID

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

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

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

建立觸發(fā)器

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

向表中添加兩條數(shù)據(jù)

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

delete from user WHERE name= 張三

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

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

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

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

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

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-13發(fā)表,共計(jì)1568字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 怀来县| 万盛区| 濉溪县| 盖州市| 灵山县| 兴文县| 都匀市| 嘉峪关市| 镇沅| 甘洛县| 湟中县| 镇平县| 广德县| 耿马| 岳阳县| 福州市| 厦门市| 博乐市| 陆川县| 长顺县| 阿鲁科尔沁旗| 依安县| 竹北市| 兴和县| 惠州市| 正宁县| 碌曲县| 昂仁县| 竹北市| 共和县| 广河县| 鄯善县| 龙泉市| 建德市| 南汇区| 开鲁县| 阿克陶县| 安泽县| 麦盖提县| 德州市| 鞍山市|