1、觸發(fā)器是update后激發(fā)的,我想你需要的是mysql計劃任務。
專注于為中小企業(yè)提供成都網(wǎng)站建設、成都做網(wǎng)站服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)惠民免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。
2、計劃任務狀態(tài)
show variables like '%event%';
3、使用下列的任意一句開啟計劃任務:
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1; -- 0代表關閉
SET @@global.event_scheduler = 1;
4、創(chuàng)建event語法
help create event
5、實例
實例0:
每5分鐘刪除sms表上面ybmid為空白且createdate距現(xiàn)時間超過5分鐘的數(shù)據(jù)。
USE test;
CREATE EVENT event_delnull
ON SCHEDULE
EVERY 5 MINUTE STARTS '2012-01-01 00:00:00' ENDS '2012-12-31 00:00:00'
DO
DELETE FROM sms WHERE ybmid='' AND TIMEDIFF(SYSDATE(),createdate)'00:05:00';
實例1:
每天調用存儲過程一次:
mysql delimiter //
mysql create event updatePTOonSunday
- on schedule every 1 day
- do
- call updatePTO();
- //
Query OK, 0 rows affected (0.02 sec)
這里updatePTO()是數(shù)據(jù)庫里自定義的存儲過程
6、查看任務計劃:
SELECT * FROM mysql.event\G
方法/步驟
首先,我們需要確定自己的Mysql數(shù)據(jù)庫的版本,因為my sql數(shù)據(jù)庫是從5.0.2版本才開始支持觸發(fā)器的。
我推薦大家在電腦的dos命令界面中輸入 mysql --version,來獲取mysql的版本號,注意version的兩個橫線和之前的mysql是有一個空格的。
上一步獲取了我們的mysql版本號,這一不我們就開始建立觸發(fā)器了。我采用的以視圖加代碼的方式創(chuàng)建,我們在數(shù)據(jù)表中找到要執(zhí)行刪除操作的表,然后右鍵設計表
這樣我們就打開了表的設計頁面,可以看到有一個觸發(fā)器選項卡,我們點擊“觸發(fā)器”
可以看到對應的選項,我們在名里面添加我們需要新建的觸發(fā)器的名字,在觸發(fā)選項中選擇before或者after,然后在插入、更新、刪除三個選項中勾選一個。
這樣我們就建立了一個名為“datri”的觸發(fā)器,在刪除操作執(zhí)行之后觸發(fā)
然后我們在下面的定義下面的框中輸入我們需要執(zhí)行的操作。然后點擊sql預覽,可以看到整個觸發(fā)器的代碼
最后就是保存了,由于我們做的是觸發(fā)器,保存之后,在執(zhí)行刪除操作時,這個觸發(fā)器才相當于 被執(zhí)行。
有時候在修改某一個字段的值得時候我們需要根據(jù)當前字段的不同狀態(tài)進行不同處理,
比如對于用戶表,我們需要記錄下來用戶被訪問的次數(shù),但訪問次數(shù)的初始值為 null。
如下:
CREATE TABLE `test` (
`id` ?int(11) NULL DEFAULT NULL ,
`name` ?varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`visit_num` ?int(11) NULL DEFAULT NULL
)
我們就可以使用如下的 sql 進行判斷和修改
UPDATE test set visit_age=if(visit_num is null,1,visit_num+1) where id=1。
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數(shù)據(jù)檢測恢復工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結果說Status是OK,則不用修復,如果有Error,可以用:
repair table tabTest;
進行修復,修復之后可以在用check table命令來進行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進行說明。當發(fā)現(xiàn)某個數(shù)據(jù)表出現(xiàn)問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復的話,可以使用:
myisamchk -of tablename.MYI
關于myisamchk的詳細參數(shù)說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL服務器沒有訪問這個數(shù)據(jù)表,保險的情況下是最好在進行檢測時把MySQL服務器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面啟動MySQL服務器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對于使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local里面,必須確認在執(zhí)行這條指令時MySQL服務器必須沒有啟動!檢測修復所有數(shù)據(jù)庫(表)
寫了個,看適合你不
DELIMITER?$$
DROP?TRIGGER?IF?EXISTS?`update_test`?$$
CREATE
TRIGGER?`update_test`?AFTER?UPDATE
ON?`test`
FOR?EACH?ROW?BEGIN
--?SELECT?id?FROM?test?WHERE??yl?=?new.yl?獲取test表中yl字段修改后的對應id
UPDATE?test2?SET?cl?=?new.yl?WHERE?id?=?(SELECT?id?FROM?test?WHERE??yl?=?new.yl);
END$$
DELIMITER?;
原test表
原test2表
修改test表中yl字段
現(xiàn)在test表
現(xiàn)test2表
至于如何修改test2表中的字段值,按你需求寫吧。
分享題目:mysql怎么更新觸發(fā)器,mysql創(chuàng)建更新觸發(fā)器
分享鏈接:http://m.rwnh.cn/article42/phjehc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、自適應網(wǎng)站、企業(yè)建站、小程序開發(fā)、網(wǎng)站維護、電子商務
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)