国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MySQL事件與觸發器專題精煉

MySQL事件與觸發器專題精煉

2022-03-09 22:26桃花鍵神 Mysql

觸發器是SQLserver提供給程序員和數據分析員來保證數據完整性的一種方法,它是與表事件相關的特殊的存儲過程,事件是在 MySQL 5.1后引入的,有點類似操作系統的計劃任務,但是周期性任務是內置在MySQL服務端執行的

這里是MYSQL成圣之路 

了解觸發器和事件(定時器)

什么是觸發器?

概念: 觸發器(trigger)是SQL server 提供給程序員和數據分析員來保證數據完整性的一種方法,它是與表事件相關的特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發,比如當對一個表進行操作( insert,delete, update)時就會激活它執行。觸發器經常用于加強數據的完整性約束和業務規則等。 觸發器可以從 DBA_TRIGGERS ,USER_TRIGGERS 數據字典中查到。SQL3的觸發器是一個能由系統自動執行對數據庫修改的語句。

通俗的來講,觸發器就是一個觸發裝置,裝置里面存有一段操作。這個裝置有觸發條件,達到某個條件就會觸發這個裝置,觸發裝置就會執行存儲的一段操作。

什么是事件(定時器)?

概念: 事件(event)是MySQL在相應的時刻調用的過程式數據庫對象。一個事件可調用一次,也可周期性的啟動,它由一個特定的線程來管理的,也就是所謂的“事件調度器”。

通俗的來講,事件就可以看作一個定時器,設定一個時間。等時間到了開始執行設置好的操作。

觸發器和事件(定時器)的區別

  • 事件和觸發器類似,都是在某些事情發生的時候啟動。當數據庫上啟動一條語句的時候,觸發器就啟動了,而事件是根據調度事件來啟動的。由于他們彼此相似,所以事件也稱為臨時性觸發器。
  • 事件取代了原先只能由操作系統的計劃任務來執行的工作,而且MySQL的事件調度器可以精確到每秒鐘執行一個任務,而操作系統的計劃任務(如:Linux下的CRON或Windows下的任務計劃)只能精確到每分鐘執行一次。

 

創建觸發器和事件(定時器)

創建觸發器

例一:建立一個用戶表(用戶ID,用戶姓名),建立一個觸發器(當用戶表中插入數據時,自動生成一個全局唯一的ID)

先建立user表

create table user(
id int PRIMARY KEY,
name varchar(20)
);

MySQL事件與觸發器專題精煉

建立觸發器

-- 建立觸發器名為tt
create TRIGGER tt
-- 觸發條件,向user表中插入數據時啟動觸發器
BEFORE insert on user
-- 檢查表中每一行,對新插入的數據進行操作
for EACH ROW
-- 執行操作
BEGIN 
set new.id=UUID();
END

剛剛建立的觸發器(查看當前數據庫下全部觸發器的代碼show triggers)

MySQL事件與觸發器專題精煉

效果:向表中插入三個用戶名,自動生成三個ID

insert user(name) VALUE('張三'),('李四'),('王五')

MySQL事件與觸發器專題精煉

例二:再建立一個訂單表DD(訂單ID,商品名稱,用戶ID),建立一個觸發器tq1(當刪除一個用戶時,該用戶的訂單也將刪除)

建表

create table DD(
ddid int PRIMARY KEY,
ddname VARCHAR(20),
userid VARCHAR(50)
)

MySQL事件與觸發器專題精煉

建立觸發器

delimiter $
-- 建立觸發器名為tq
create TRIGGER tq1
-- 觸發條件,再dd表刪除數據之后啟動觸發器
AFTER DELETE on user
-- 檢查表中每一行,對新插入的數據進行操作
for EACH ROW
-- 執行操作
BEGIN  
DELETE FROM dd WHERE old.id=userid;
END $ 
delimiter ;

MySQL事件與觸發器專題精煉

向表中添加兩條數據

MySQL事件與觸發器專題精煉

效果:刪除user表中的用戶,dd表中的記錄也跟隨刪除 刪除張三

delete from user WHERE name='張三'

MySQL事件與觸發器專題精煉

MySQL事件與觸發器專題精煉

創建事件(定時器)

在User表中設置一個事件在一分鐘后執行。一分鐘后向user表中添加三條數據

-- 創建事件e1
create event e1 
-- 預定時間
on SCHEDULE 
-- 當前時間加一分鐘
AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
-- 執行操作
do insert user(name) VALUE('王大麻子'),('王二麻子'),('王三麻子');

效果 執行前

MySQL事件與觸發器專題精煉

沒到一分鐘查看一下,沒有變化

MySQL事件與觸發器專題精煉

一分鐘后,數據自動添加上了

MySQL事件與觸發器專題精煉

 

對觸發器和時間(定時器)的操作

查看當前數據庫下的觸發器和定時器

這里只能查看還未執行的定時器,執行完的已經沒了

// 查詢當前庫下的定時器
show events

查看當前庫下的觸發器

show TRIGGERS

MySQL事件與觸發器專題精煉

刪除定時器和觸發器

刪除觸發器tt2

DROP TRIGGER tt2

MySQL事件與觸發器專題精煉

新建定時器

MySQL事件與觸發器專題精煉

刪除定時器

drop event e1

MySQL事件與觸發器專題精煉

-- 開啟關閉事件調度器 
-- ON 1 開啟事件功能 
-- OFF off 0 關閉事件功能
set global event_scheduler = OFF 
set global event_scheduler = on;

到此這篇關于MySQL事件與觸發器專題精煉的文章就介紹到這了,更多相關MySQL 觸發器內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_50843918/article/details/123145239

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99久久99久久久精品色圆 | 中文字幕精品一区 | 欧美区日韩区 | 福利网址| 亚洲视频免费在线观看 | 中文在线一区二区 | 午夜精品视频 | 色欧美片视频在线观看 | 日韩欧美国产一区二区三区 | 国产片在线观看免费观看 | 欧美久久久久久久久久 | 欧美在线观看黄 | 成人午夜免费视频 | 欧美国产日韩一区 | 欧美综合视频 | 777色狠狠一区二区三区 | 91精品在线看 | 在线观看黄色电影 | 福利片网站 | 99精品欧美一区二区三区综合在线 | 免费国产一区 | 国产精品久久精品 | 亚洲一区二区三区在线播放 | 成人免费网站 | 中文字幕一区二区三区乱码图片 | 羞羞免费视频网站 | 在线国产日韩 | 一本亚洲| 久久久综合网 | 成人免费在线小视频 | 亚洲国产精品电影在线观看 | 欧美99 | 91精品国产一区二区 | 久久精品 | 日韩欧美二区 | 亚洲激情网站 | 久草成人网| 中文字幕在线精品 | 91偷拍精品一区二区三区 | 欧美日韩高清在线一区 | 成人av免费在线 |