日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MySql触发器讲解及使用案例

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySql触发器讲解及使用案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.什么是觸發器

觸發器(trigger):監視某種情況,并進行某種操作,它的執行并不是程序調用,也不是手工啟動,而是由事件來觸發,例如:對一張表進行操作(插入,更新,刪除)時,就會觸發執行事先編輯好的若干條SQL語句。

2.觸發器的特點與作用

觸發器里面的sql語句是一個事務,具有原子性,要么全部執行,要么全部不執行。

3.觸發器的創建

使用navicat工具,右鍵點擊表>設計表>觸發器>添加觸發器;

在這里設置觸發時機,和sql語句

sql語句寫在 BEGIN 和 END中間

4.NEWOLD的使用

MySQL中定義了NEW OLD 兩個臨時表,用來表示觸發器的所在表中,觸發了觸發器的哪一行數據,用來引用觸發器中發生變化的記錄內容

1.在 inster 觸發器中,NEW 用來攔截并保存將要(before)或者已經(after) 插入的數據

2.在 update 觸發器中,OLD用來攔截并保存將要或已經修改的原數據NEW用來攔截并保存將要或已經修改的為新的數據

3.在delete 觸發器中,OLD用來攔截并保存將要或或者已經被刪除的原數據

5.使用案例

例如:我們用一張班級表,一張學生表

場景一:我門往學生表增加成員時,觸發給對應的班級表人數+1

創建班級表:

?學生表:

?學生表通過classID字段關聯班級表

編寫觸發器:

右鍵student表>設計表>觸發器

然后設置觸發規則,我們設置在插入之后,即學生人數增加之后給對應班級人數+1

?更新條件為:班級id 等于 插入后數據classID字段的值

BEGINupdate class set number = number+1 where id = NEW.classID; END

此時我們創建一個班級,人數為0

?

?然后在學生表添加一個學生,所在班級為1001

然后我們在返回class班級表,刷新一下數據,會發新此時的班級人數為1

?

?場景二:如果學生姓名叫做 小魔仙,則不允許插入

創建觸發器,選擇數據插入之前觸發該事件,如果插入數據studentName字段值等于 小魔仙 ,則提示請正確輸入您的姓名;

?

BEGINIF (NEW.studentName = '小魔仙') THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '請正確輸入您的姓名';END IF; END

然后再次插入數據就會顯示該提示信息,并不運行插入

?

總結

以上是生活随笔為你收集整理的MySql触发器讲解及使用案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。