目錄
什麼是觸發器?
如何在資料庫中建立觸發器
首頁 資料庫 mysql教程 MySQL資料庫觸發器怎麼建立

MySQL資料庫觸發器怎麼建立

May 31, 2023 pm 07:31 PM
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資料庫觸發器怎麼建立的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP 的大數據結構處理技巧 PHP 的大數據結構處理技巧 May 08, 2024 am 10:24 AM

PHP 的大數據結構處理技巧

如何優化 PHP 中的 MySQL 查詢效能? 如何優化 PHP 中的 MySQL 查詢效能? Jun 03, 2024 pm 08:11 PM

如何優化 PHP 中的 MySQL 查詢效能?

如何在 PHP 中使用 MySQL 備份和還原? 如何在 PHP 中使用 MySQL 備份和還原? Jun 03, 2024 pm 12:19 PM

如何在 PHP 中使用 MySQL 備份和還原?

如何使用 PHP 插入資料到 MySQL 表? 如何使用 PHP 插入資料到 MySQL 表? Jun 02, 2024 pm 02:26 PM

如何使用 PHP 插入資料到 MySQL 表?

Java 枚舉類型在資料庫中的應用場景有哪些? Java 枚舉類型在資料庫中的應用場景有哪些? May 05, 2024 am 09:06 AM

Java 枚舉類型在資料庫中的應用場景有哪些?

如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤 如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤 Dec 09, 2024 am 11:42 AM

如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤

如何在 PHP 中使用 MySQL 預存程序? 如何在 PHP 中使用 MySQL 預存程序? Jun 02, 2024 pm 02:13 PM

如何在 PHP 中使用 MySQL 預存程序?

如何使用 PHP 建立 MySQL 表? 如何使用 PHP 建立 MySQL 表? Jun 04, 2024 pm 01:57 PM

如何使用 PHP 建立 MySQL 表?

See all articles