最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫觸發(fā)器從小白到精通

 更新時間:2022年03月09日 16:45:01   作者:桃花鍵神  
觸發(fā)器是SQLserver提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關的特殊的存儲過程,它的執(zhí)行不是由程序調用,也不是手工啟動,而是由事件來觸發(fā),比如當對一個表進行操作時就會激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強數(shù)據(jù)的完整性約束和業(yè)務規(guī)則等

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

什么是觸發(fā)器?

概念:觸發(fā)器(trigger)是SQL server 提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關的特殊的存儲過程,它的執(zhí)行不是由程序調用,也不是手工啟動,而是由事件來觸發(fā),比如當對一個表進行操作( insert,delete, update)時就會激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強數(shù)據(jù)的完整性約束和業(yè)務規(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ā)器實例(關鍵詞:trigger)

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

先建立user表

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

建立觸發(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ā)器(查看當前數(shù)據(jù)庫下全部觸發(fā)器的代碼show triggers)

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

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

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

建表

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

建立觸發(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 ;

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

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

刪除張三

delete from user WHERE name='張三'

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

  • 上面的例二如果用外鍵也可以實現(xiàn)同樣的效果,那么是不是說明外鍵可以做到的,觸發(fā)器都可以做到,外鍵做不到的觸發(fā)器也可以做到呢?
  • 與外鍵相比,觸發(fā)器的靈活性更高功能更多,可以執(zhí)行更多功能在一定程度上可以代替外鍵,實現(xiàn)外鍵的功能。
  • 觸發(fā)器也可用于強制引用完整性,以便在多個表中添加、更新或刪除行時,保留在這些表之間所定義的關系。然而,強制引用完整性的最好方法是在相關表中定義主鍵和外鍵約束。如果使用數(shù)據(jù)庫關系圖,則可以在表之間創(chuàng)建關系以自動創(chuàng)建外鍵約束。

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

到此這篇關于MySQL數(shù)據(jù)庫觸發(fā)器從小白到精通的文章就介紹到這了,更多相關MySQL 觸發(fā)器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Ubuntu?18.04.4安裝mysql的過程詳解?親測可用

    Ubuntu?18.04.4安裝mysql的過程詳解?親測可用

    這篇文章主要介紹了Ubuntu?18.04.4安裝mysql-親測可用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • mysql zip 文件安裝教程

    mysql zip 文件安裝教程

    這篇文章主要為大家詳細介紹了mysql zip 文件安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Ubuntu搭建Mysql+Keepalived高可用的實現(xiàn)(雙主熱備)

    Ubuntu搭建Mysql+Keepalived高可用的實現(xiàn)(雙主熱備)

    本文主要介紹了Ubuntu搭建Mysql+Keepalived高可用的實現(xiàn)(雙主熱備),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Navicat for MySQL 11注冊碼\激活碼匯總

    Navicat for MySQL 11注冊碼\激活碼匯總

    Navicat for MySQL注冊碼用來激活 Navicat for MySQL 軟件,只要擁有 Navicat 注冊碼就能激活相應的 Navicat 產品。這篇文章主要介紹了Navicat for MySQL 11注冊碼\激活碼匯總,需要的朋友可以參考下
    2020-11-11
  • MySQL安裝starting?the?server失敗的2種解決辦法(推薦!)

    MySQL安裝starting?the?server失敗的2種解決辦法(推薦!)

    MySQL是一個非常強大的關系型數(shù)據(jù)庫,但有些初學者在安裝配置的時候,遇到種種的困難,下面這篇文章主要給大家介紹了關于MySQL安裝starting?the?server失敗的2種解決辦法,需要的朋友可以參考下
    2023-04-04
  • MySQL 日期時間加減的示例代碼

    MySQL 日期時間加減的示例代碼

    本文主要介紹了MySQL日期時間加減,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • sql如何使用group by分組,同時查詢其它字段

    sql如何使用group by分組,同時查詢其它字段

    文章介紹了使用SQL的GROUP BY進行分組查詢時的一些規(guī)則和技巧,主要強調了在SELECT后面的字段要么是聚合函數(shù)的一部分,要么必須包含在GROUP BY子句中,此外,文章還討論了如何在GROUP BY時查詢其他字段,通過使用MAX或MIN函數(shù)來實現(xiàn)
    2024-12-12
  • innodb如何巧妙的實現(xiàn)事務隔離級別詳解

    innodb如何巧妙的實現(xiàn)事務隔離級別詳解

    隔離是ACID(Atomicity,Consistency,Isolation,Durability)的重要部分,下面這篇文章主要給大家介紹了關于innodb如何巧妙的實現(xiàn)事務隔離級別的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-11-11
  • MySQL索引優(yōu)化實例分析

    MySQL索引優(yōu)化實例分析

    這篇文章主要介紹了MySQL索引優(yōu)化實例分析,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • 你還在 Select * 嗎?

    你還在 Select * 嗎?

    這篇文章主要介紹了MySql Select ,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03

最新評論

通许县| 航空| 海盐县| 绥芬河市| 马鞍山市| 德安县| 安化县| 阳西县| 南阳市| 南昌县| 临湘市| 怀宁县| 寿光市| 兰考县| 阿尔山市| 龙南县| 通州市| 通江县| 神农架林区| 浦江县| 上高县| 和平区| 华蓥市| 济源市| 四子王旗| 卓尼县| 南投市| 贡觉县| 邻水| 宝山区| 伽师县| 鹰潭市| 中宁县| 嘉祥县| 和田县| 江阴市| 永善县| 泰和县| 鲁甸县| 股票| 邳州市|