欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > MySQL觸發器的使用場景及方法實例

MySQL觸發器的使用場景及方法實例

熱門標簽:福州呼叫中心外呼系統哪家好 云南語音外呼系統平臺 北京人工外呼系統價錢 沃克斯電梯外呼線路圖 常州電銷外呼系統一般多少錢 房產智能外呼系統品牌 400電話鄭州申請 天智外呼系統 地圖標注被騙三百怎么辦

觸發器:

觸發器的使用場景以及相應版本:

觸發器可以使用的MySQL版本:

  • 版本:MySQL5以上

使用場景例子:

  1. 每當增加一個顧客到某個數據庫表時,都檢查其電話號碼格式是否正確,州的縮寫是否為大寫
  2. 每當訂購一個產品時,都從庫存數量中減去訂購的數量
  3. 無論何時刪除一行,都在某個存檔表中保留一個副本

即:在某個表發生更改時自動處理。

如遇到觸發器報錯“Not allowed to return a result set from a trigger”;請劃到最后看詳解;

觸發器的使用:

創建基本的觸發器:

CREATE TRIGGER newproduct AFTER INSERT on products FOR EACH ROW
BEGIN
 DECLARE msg VARCHAR(100);
 SET msg = "products added";
 SIGNAL SQLSTATE 'HY000' SET message_text = msg;
 
END

結果:

INSERT INTO products VALUES('demo2','1003','xiaoguo','66.6','hello world')
> 1644 - products added
> 時間: 0.035s

解釋:

首先創建一個觸發器:

#newproduct 觸發器的名字
CREATE TRIGGER newproduct

觸發的時機:

BEFORE:觸發器在觸發他們的語句之前觸發

AFTER:觸發器在觸發他們的語句完成后觸發

在這里我們使用的after;也就是在插入結束后觸發條件;

DECLARE msg VARCHAR(100);

注意:declare語句是在復合語句中聲明變量的指令;如果不聲明msg,執行語句時,MySQL報錯;

SIGNAL SQLSTATE 'HY000' SET message_text = msg;

如果該SIGNAL語句指示特定SQLSTATE值,則該值用于表示指定的條件

"HY000”被稱為“一般錯誤":

如果命令出現一般錯誤,則會觸發后面的message中的消息;

注:該語句只是個人理解,也是一知半解,如果有更好的解釋,歡迎留言。

觸發的條件以BEGIN開始,END結束。

觸發事件:

  1. insert
  2. update
  3. delete

刪除觸發器:

-- 刪除觸發器
DROP TRIGGER newproduct;

INSERT觸發器:

insert觸發器在insert語句執行之前或者之后執行,需要注意以下幾點:

  1. 在insert觸發器代碼內。可以引用一個名為NEW的虛擬表,訪問被插入的行;
  2. 在before insert觸發器中,NEW中的值也可以被更新(允許更改被插入的值)
  3. 對于AUTO_INCREMENT列,NEW在insert執行之前包含0,在insert執行之后包含新的自動生成值

例子:插入一個新的訂單時,生成一個新的訂單號保存到order_num

CREATE TRIGGER neworder AFTER INSERT ON orders for EACH ROW
 SELECT NEW.order_num into @ee;

insert INTO orders(order_date,cust_id) VALUES(NOW(),10001);
SELECT @ee as num;

drop TRIGGER neworder;

解釋:

創建一個neworder的觸發器,在插入之后執行,且對每個插入行執行,在insert中有一個與orders表一摸一樣的虛表,用NEW 表示;

SELECT NEW.order_num into @a;

在虛表中找到我們插入的數據的編號,將標號保存在a變量中;

檢測:

insert INTO orders(order_date,cust_id) VALUES(NOW(),10001);
SELECT @ee as num;

插入數據,輸出插入數據的編號

刪除:

drop TRIGGER neworder;

刪除觸發器。

例二:

在COURSE表上創建觸發器,檢查插入時是否出現課程名相同的記錄,若有則不操作。

CREATE TRIGGER trg_course_in 
BEFORE INSERT ON course
FOR EACH ROW
BEGIN
  DECLARE msg VARCHAR(100); 
  IF EXISTS (SELECT * FROM course where cname=NEW.cname) THEN 
   SET msg='不能輸入相同名稱的課程'; 
   SIGNAL SQLSTATE 'HY000' SET message_text = msg; 
  END IF; 
 
END

例三:向student表中插入信息時,檢查ssex的值必須為男或女。

CREATE TRIGGER trg_ssex AFTER INSERT on student FOR EACH ROW
BEGIN
 DECLARE msg VARCHAR(100);
 IF(NEW.ssex not in('男','女')) THEN
 SET msg ='性別必須為男或女'; 
 SIGNAL SQLSTATE 'HY000' SET message_text = msg;
 END IF
END

UPDATE觸發器:

  1. 在update觸發器的代碼中,可以引用一個名為OLD的虛擬表訪問以前的值,即:update未執行前的值,還可以引用一個名為NEW的虛擬表訪問新更新的值;
  2. 在before update觸發器中,NEW中的值可能也被更新(允許修改將要用于update語句中的值);
  3. OLD中的值全部只讀,不能更新。

例一:保證州名縮寫為大寫

CREATE TRIGGER UPDATEevendor BEFORE UPDATE on vendors
FOR EACH ROW SET new.vend_state =UPPER(new.vend_state);

UPDATE vendors SET vend_state='hw' where vend_id='1001';
DROP TRIGGER UPDATEevendor;

注:upper:將文本轉換為大寫:

例二:不允許修改student表中的學號sno,如果修改該列則顯示錯誤信息并取消操作。

CREATE TRIGGER trg_student_updateSno BEFORE UPDATE
FOR EACH ROW
BEGIN
 DECLARE msg VARCHAR(100); 
 IF NEW.sno > OLD.sno THEN 
 SET msg='不允許修改sno'; 
 SIGNAL SQLSTATE 'HY000' SET message_text = msg; 
 END IF; 
END

DELETE觸發器:

在DELETE觸發器在delete語句執行之前或之后執行:

  1. 在delete觸發器代碼內,可以引用OLD的虛擬表,訪問被刪除的行;
  2. OLD中的值全部都是只讀,不能更新

例子:

使用old保存將要被刪除的行到一個存檔表中

首先先創建一個與orders相似的表:

CREATE TABLE archive_orders LIKE orders;
-- 創建一個刪除的觸發器
CREATE TRIGGER deleteorder BEFORE DELETE on orders
for EACH ROW BEGIN
INSERT INTO archive_orders(order_num,order_date,cust_id) VALUES(old.order_num,old.order_date,old.cust_id);
END

解釋:

在刪除order表中行中信息時,將刪除的信息保存到archive_orders中;

刪除原表中一行:

DELETE FROM orders WHERE order_num='20014';

查看效果:

SELECT * FROM archive_orders;

結束:

注:如果遇到觸發器報錯“Not allowed to return a result set from a trigger”

  1. 原因:因為從MySQL5以后不支持觸發器返回結果集
  2. 解決方法:在后面語句后面添加 into @變量名
  3. 取數據:select @變量名

詳細解釋:https://www.programmersought.com/article/3237975256/

創建用戶變量:https://www.jb51.net/article/201843.htm

到此這篇關于MySQL觸發器的使用場景及方法的文章就介紹到這了,更多相關MySQL觸發器使用內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • mysql觸發器trigger實例詳解
  • MySQL中觸發器和游標的介紹與使用
  • MySQL 觸發器的使用和理解
  • MySQL中使用游標觸發器的方法
  • MySQL 觸發器的使用及需要注意的地方
  • 詳解MySQL數據庫之觸發器
  • 淺談MySql 視圖、觸發器以及存儲過程
  • mysql 觸發器創建與使用方法示例
  • MySQL觸發器基本用法詳解【創建、查看、刪除等】
  • MySQL觸發器的使用

標簽:鹽城 拉薩 黔東 沈陽 移動 沈陽 珠海 徐州

巨人網絡通訊聲明:本文標題《MySQL觸發器的使用場景及方法實例》,本文關鍵詞  MySQL,觸發器,的,使用,場景,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL觸發器的使用場景及方法實例》相關的同類信息!
  • 本頁收集關于MySQL觸發器的使用場景及方法實例的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    亚洲第一综合色| 色婷婷精品久久二区二区密| 少妇精品无码一区二区免费视频| 欧美日本在线看| 亚洲小说欧美激情另类| 一卡二卡三卡四卡五卡| 在线观看av一区| 一个色妞综合视频在线观看| 人妻激情偷乱视频一区二区三区| 欧美综合视频在线观看| 亚洲综合免费观看高清在线观看| 黄色片子免费看| 欧美日精品一区视频| 亚洲国产另类av| 国产视频精品视频| 3d动漫精品啪啪1区2区免费| 亚洲不卡在线观看| 性欧美成人播放77777| 日韩免费视频一区二区| 美脚の诱脚舐め脚责91| 性少妇bbw张开| 久久久久亚洲av无码专区桃色| 91久久奴性调教| 亚洲国产日韩a在线播放| 日韩无码精品一区二区| 欧美成人国产一区二区| 狠狠色丁香婷婷综合| 性猛交ⅹxxx富婆video| 国产欧美一区二区三区在线老狼| 国产成人亚洲精品青草天美| 成人在线观看高清| 亚洲综合偷拍欧美一区色| 久草视频福利在线| 久久综合99re88久久爱| 国产99一区视频免费| 色婷婷综合中文久久一本| 亚洲一区日韩精品中文字幕| 99re久久精品国产| 久久久另类综合| av中文一区二区三区| 欧美日韩国产高清一区二区三区 | 激情综合丁香五月| 久久―日本道色综合久久| 国产成人精品午夜视频免费| 欧美影院一区二区三区| 日韩成人一级片| 女人裸体性做爰全过| 亚洲女与黑人做爰| 国产又黄又粗又猛又爽的视频 | 久久99精品久久久久久| 99鲁鲁精品一区二区三区| 一区二区三区四区激情| 魔女鞋交玉足榨精调教| 国产精品久线在线观看| 性欧美18—19sex性高清| 精品成人在线观看| www.在线成人| 日韩欧美一区二区久久婷婷| 粉嫩欧美一区二区三区高清影视| 欧美日韩国产另类一区| 国产精品综合久久| 欧美蜜桃一区二区三区| 国产成人午夜精品5599| 7799精品视频| 国产馆精品极品| 3atv在线一区二区三区| 成人免费黄色在线| 日韩欧美色电影| a级精品国产片在线观看| 欧美一级日韩免费不卡| 成人高清视频在线| 精品国偷自产国产一区| 91污片在线观看| 国产日韩欧美激情| 国产网站无遮挡| 1024亚洲合集| 免费黄色片网站| 午夜久久久久久电影| 东方av正在进入| 久久99精品一区二区三区三区| 日本精品一区二区三区高清 | 欧美日韩日日骚| 国产激情一区二区三区| 欧美一级视频精品观看| 972aa.com艺术欧美| 国产亚洲精品超碰| 亚洲精品久久久久久国产精华液| 日韩 中文字幕| 亚洲一区在线观看网站| 中文字幕第二区| 日韩高清不卡在线| 欧美视频在线观看一区二区| 国产美女精品一区二区三区| 欧美一级在线免费| 久久久精品人妻一区二区三区| 中文字幕第一区| 韩国三级hd中文字幕| 五月婷婷综合网| 欧美影视一区二区三区| 成人午夜激情视频| 国产午夜亚洲精品理论片色戒| 国产肉体xxxx裸体784大胆| 亚洲与欧洲av电影| 色婷婷综合久久久| 风间由美一区二区三区在线观看 | 亚洲精品美国一| 色综合天天综合网天天狠天天 | 久久99久国产精品黄毛片色诱| 制服.丝袜.亚洲.另类.中文| avtt中文字幕| 一区二区在线电影| 一本久久a久久精品亚洲| 国产激情一区二区三区桃花岛亚洲| 欧美不卡一区二区三区| 亚洲永久无码7777kkk| 视频一区二区国产| 欧美精品欧美精品系列| 丰满人妻一区二区三区大胸| 亚洲视频香蕉人妖| 色综合天天综合给合国产| 粉嫩在线一区二区三区视频| 中国av一区二区三区| 天天做夜夜爱爱爱| 福利视频网站一区二区三区| 国产精品美日韩| 搜索黄色一级片| 成人免费视频播放| 亚洲人精品一区| 91黄色激情网站| 韩国三级在线播放| 一区二区高清视频在线观看| 欧美三级一区二区| 91超薄肉色丝袜交足高跟凉鞋| 亚洲国产中文字幕在线视频综合 | 在线观看国产网站| 人人精品人人爱| 精品乱人伦小说| 国产精品情侣呻吟对白视频| 国产一区二区精品久久| 中文字幕精品综合| 色综合久久综合网97色综合| 99精品视频在线播放观看| 亚洲激情自拍偷拍| 欧美日韩国产片| 偷拍女澡堂一区二区三区| 久久精品国产一区二区三| 久久久另类综合| 岛国毛片在线观看| 欧美老女人bb| 美国欧美日韩国产在线播放| 久久久久久久免费视频了| 老熟妻内射精品一区| 91在线观看高清| 亚洲成人av资源| 精品国产一区二区国模嫣然| 国产精品麻豆免费版现看视频| 成人精品gif动图一区| 亚洲国产一区二区视频| 欧美sm极限捆绑bd| 99视频只有精品| 国产精久久久久| 久久精品二区亚洲w码| 日本一二三不卡| 欧美午夜宅男影院| 亚洲国产无码精品| 丁香婷婷综合激情五月色| 亚洲国产日产av| 久久久久久久一区| 欧美艳星brazzers| wwwwxxxx国产| www.在线欧美| 蜜臀av性久久久久蜜臀aⅴ| 欧美激情一区二区三区四区| 精品视频一区 二区 三区| 在线观看日本中文字幕| 成人高清在线视频| 日本女人一区二区三区| 国产精品久久久久影院亚瑟| 884aa四虎影成人精品一区| 男女全黄做爰文章| 三上悠亚 电影| 国产综合色产在线精品| 伊人婷婷欧美激情| 精品久久一二三区| 日本丰满少妇一区二区三区| 三级网站在线免费观看| av电影一区二区| 久久精品久久精品| 亚洲影院久久精品| 久久精品日韩一区二区三区| 欧美中文字幕久久| 五月激情四射婷婷| 黄色激情在线观看| 成人免费毛片嘿嘿连载视频| 免费视频最近日韩| 一区二区三区四区国产精品| 国产亚洲欧美日韩日本| 欧美电影在线免费观看| 久草网站在线观看| 精品无码人妻一区二区免费蜜桃|