新聞中心
Python全棧之路系列之MySQL觸發(fā)器
l
站在用戶的角度思考問題,與客戶深入溝通,找到尼瑪網(wǎng)站設(shè)計與尼瑪網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設(shè)計、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋尼瑪?shù)貐^(qū)。
對某個表進行增/刪/改
操作的前后如果希望觸發(fā)某個特定的行為時,可以使用觸發(fā)器,觸發(fā)器用于定制用戶對表的行進行增/刪/改
前后的行為。
創(chuàng)建觸發(fā)器基本語法
插入前
CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW BEGIN ... END
插入后
CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW BEGIN ... END
刪除前
CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW BEGIN ... END
刪除后
CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW BEGIN ... END
更新前
CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW BEGIN ... END
更新后
CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROW BEGIN ... END
觸發(fā)器實例
創(chuàng)建一個user_info
表和user_info_back
表,里面有UID
,Name
,Password
,E-mil
列;
CREATE TABLE `user_info` ( `UID` int(5) NOT NULL AUTO_INCREMENT, `Name` char(15) NOT NULL, `Password` varchar(32) DEFAULT NULL, `Email` varchar(255) DEFAULT NULL, PRIMARY KEY (`UID`,`Name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `user_info_back` ( `UID` int(5) NOT NULL AUTO_INCREMENT, `Name` char(15) NOT NULL, `Password` varchar(32) DEFAULT NULL, `Email` varchar(255) DEFAULT NULL, PRIMARY KEY (`UID`,`Name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
創(chuàng)建一個插入前的觸發(fā)器
觸發(fā)器的作用就是在往user_info
表中插入數(shù)據(jù)之前進入tri_before_insert_tb1
觸發(fā)器,執(zhí)行里面的操作
delimiter % CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON user_info FOR EACH ROW BEGIN -- 如果插入時的Name="as" IF NEW.Name = "ansheng" THEN -- 那么就把這條數(shù)據(jù)先插入user_info_back表中,數(shù)據(jù)相同 INSERT INTO user_info_back(Name,Password,Email) VALUES(NEW.Name,NEW.Password,NEW.Email); END IF; END% delimiter ;
使用觸發(fā)器
觸發(fā)器無法由用戶直接調(diào)用,而知由于對表的增/刪/改
操作被動引發(fā)的。
往user_info
表中插入兩條數(shù)據(jù)
INSERT INTO user_info(Name,Password,Email) VALUES("ansheng","ansheng","ansheng@ansheng.me"),("root","r","root@ansheng.me");
查看表中的數(shù)據(jù)
mysql> select * from user_info; +-----+---------+----------+--------------------+ | UID | Name | Password | Email | +-----+---------+----------+--------------------+ | 1 | ansheng | ansheng | ansheng@ansheng.me | | 2 | root | r | root@ansheng.me | +-----+---------+----------+--------------------+ 2 rows in set (0.00 sec) mysql> select * from user_info_back; +-----+---------+----------+--------------------+ | UID | Name | Password | Email | +-----+---------+----------+--------------------+ | 1 | ansheng | ansheng | ansheng@ansheng.me | +-----+---------+----------+--------------------+ 1 row in set (0.00 sec)
刪除觸發(fā)器
DROP TRIGGER tri_after_insert_tb1;
NEW
表示即將插入的數(shù)據(jù)行,OLD
表示即將刪除的數(shù)據(jù)行,對于INSERT語句,只有NEW是合法的,對于DELETE語句,只有OLD才合法,而UPDATE語句可以在和NEW以及OLD同時使用
#Python全棧之路
分享標(biāo)題:8Python全棧之路系列之MySQL觸發(fā)器
本文網(wǎng)址:http://www.dlmjj.cn/article/jhhdei.html