觸發器是一種數據庫對象,可在表上的特定事件(插入、更新或刪除)發生時自動執行 sql 語句。其作用包括:維護數據完整性,確保表中數據符合特定規則自動執行任務,如發送電子郵件、更新其他表實現復雜的業務邏輯提高性能,避免重復執行相同任務
MySQL 觸發器的作用
MySQL 觸發器是一種數據庫對象,它允許在表上的特定事件(例如 INSERT、UPDATE 或 DELETE)發生時自動執行一組 SQL 語句。
觸發器有哪些作用?
觸發器有以下主要作用:
維護數據完整性:觸發器可以確保表中的數據始終保持特定規則,例如確保列的唯一性或值域限制。
自動執行任務:觸發器可以在數據修改后自動執行諸如發送電子郵件、更新其他表或調用存儲過程等任務。
實現業務邏輯:觸發器可以用于實現復雜的業務邏輯,這些邏輯可能難以或不可能通過簡單的 SQL 語句來實現。
提高性能:觸發器可以通過避免在每個數據修改語句中重復執行相同的任務來提高性能。
觸發器的結構
一個觸發器由以下部分組成:
觸發類型:指定在哪個事件上觸發觸發器,例如 INSERT、UPDATE 或 DELETE。
觸發時間:指定是在事件之前(BEFORE)還是之后(AFTER)觸發觸發器。
觸發體:包含要執行的 SQL 語句的觸發器代碼塊。
使用觸發器
要創建觸發器,可以使用以下語法:
CREATE TRIGGER trigger_name BEFORE/AFTER [INSERT|UPDATE|DELETE] ON table_name FOR EACH ROW BEGIN -- 觸發器代碼 END;
登錄后復制
示例
以下觸發器確保表 users 中的 username 列始終唯一:
CREATE TRIGGER unique_username BEFORE INSERT ON users FOR EACH ROW BEGIN IF EXISTS (SELECT 1 FROM users WHERE username = NEW.username) THEN SIGNAL SQLSTATE '23000' SET MESSAGE_TEXT = 'Username already exists'; END IF; END;
登錄后復制