日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
8Python全棧之路系列之MySQL觸發(fā)器

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