首頁  >  文章  >  資料庫  >  MySQL資料庫觸發器怎麼建立

MySQL資料庫觸發器怎麼建立

WBOY
WBOY轉載
2023-05-31 19:31:354540瀏覽

什麼是觸發器?

概念:觸發器(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中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除