MySQL中,觸發(fā)器是一種與表的操作相關(guān)聯(lián)的特殊類型的存儲過程。當(dāng)指定的表發(fā)生特定事件時,觸發(fā)器會自動執(zhí)行定義好的操作。常見的事件包括INSERT、UPDATE和DELETE等操作。
使用觸發(fā)器可用于實現(xiàn)自動化的業(yè)務(wù)邏輯以及數(shù)據(jù)完整性的控制,例如數(shù)據(jù)的備份、審核、自動更新等。MySQL中,創(chuàng)建觸發(fā)器的語法如下:
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW BEGIN -- 觸發(fā)器的邏輯處理 END;
其中,trigger_name指定觸發(fā)器的名稱,trigger_time指定觸發(fā)器的執(zhí)行時機(jī),可取值為BEFORE或AFTER,trigger_event指定觸發(fā)器關(guān)注的事件,例如INSERT、UPDATE或DELETE等。table_name指定與觸發(fā)器關(guān)聯(lián)的表名,F(xiàn)OR EACH ROW指觸發(fā)器的作用范圍是表中的每一行,BEGIN和END包括觸發(fā)器要執(zhí)行的邏輯處理。
例如,現(xiàn)在需要實現(xiàn)當(dāng)插入一條新記錄時,自動插入一條備份記錄到數(shù)據(jù)表backup中,可以創(chuàng)建以下的觸發(fā)器:
CREATE TRIGGER backup_trigger AFTER INSERT ON user FOR EACH ROW BEGIN INSERT INTO backup (id, username, password, email) VALUES (NEW.id, NEW.username, NEW.password, NEW.email); END;
在上面的例子中,我們創(chuàng)建了一個觸發(fā)器backup_trigger,它會在user表插入新數(shù)據(jù)時執(zhí)行。在BEGIN和END之間,我們插入了一條INSERT語句,用于把插入的數(shù)據(jù)復(fù)制到backup表中,其中NEW.id、NEW.username等是MySQL內(nèi)置的變量,它們分別代表了插入的數(shù)據(jù)中id、username等字段的值。