mysql怎么更新觸發(fā)器,mysql創(chuàng)建更新觸發(fā)器

mysql 實(shí)現(xiàn)每月更新一次的觸發(fā)器問(wèn)題

1、觸發(fā)器是update后激發(fā)的,我想你需要的是mysql計(jì)劃任務(wù)。

專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)惠民免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

2、計(jì)劃任務(wù)狀態(tài)

show variables like '%event%';

3、使用下列的任意一句開(kāi)啟計(jì)劃任務(wù):

SET GLOBAL event_scheduler = ON;

SET @@global.event_scheduler = ON;

SET GLOBAL event_scheduler = 1; -- 0代表關(guān)閉

SET @@global.event_scheduler = 1;

4、創(chuàng)建event語(yǔ)法

help create event

5、實(shí)例

實(shí)例0:

每5分鐘刪除sms表上面ybmid為空白且createdate距現(xiàn)時(shí)間超過(guò)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';

實(shí)例1:

每天調(diào)用存儲(chǔ)過(guò)程一次:

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ù)庫(kù)里自定義的存儲(chǔ)過(guò)程

6、查看任務(wù)計(jì)劃:

SELECT * FROM mysql.event\G

mysql 觸發(fā)器 怎么用?

方法/步驟

首先,我們需要確定自己的Mysql數(shù)據(jù)庫(kù)的版本,因?yàn)閙y sql數(shù)據(jù)庫(kù)是從5.0.2版本才開(kāi)始支持觸發(fā)器的。

我推薦大家在電腦的dos命令界面中輸入 mysql --version,來(lái)獲取mysql的版本號(hào),注意version的兩個(gè)橫線(xiàn)和之前的mysql是有一個(gè)空格的。

上一步獲取了我們的mysql版本號(hào),這一不我們就開(kāi)始建立觸發(fā)器了。我采用的以視圖加代碼的方式創(chuàng)建,我們?cè)跀?shù)據(jù)表中找到要執(zhí)行刪除操作的表,然后右鍵設(shè)計(jì)表

這樣我們就打開(kāi)了表的設(shè)計(jì)頁(yè)面,可以看到有一個(gè)觸發(fā)器選項(xiàng)卡,我們點(diǎn)擊“觸發(fā)器”

可以看到對(duì)應(yīng)的選項(xiàng),我們?cè)诿锩嫣砑游覀冃枰陆ǖ挠|發(fā)器的名字,在觸發(fā)選項(xiàng)中選擇before或者after,然后在插入、更新、刪除三個(gè)選項(xiàng)中勾選一個(gè)。

這樣我們就建立了一個(gè)名為“datri”的觸發(fā)器,在刪除操作執(zhí)行之后觸發(fā)

然后我們?cè)谙旅娴亩x下面的框中輸入我們需要執(zhí)行的操作。然后點(diǎn)擊sql預(yù)覽,可以看到整個(gè)觸發(fā)器的代碼

最后就是保存了,由于我們做的是觸發(fā)器,保存之后,在執(zhí)行刪除操作時(shí),這個(gè)觸發(fā)器才相當(dāng)于 被執(zhí)行。

mysql 觸發(fā)器 if 語(yǔ)句update怎么操作?

有時(shí)候在修改某一個(gè)字段的值得時(shí)候我們需要根據(jù)當(dāng)前字段的不同狀態(tài)進(jìn)行不同處理,

比如對(duì)于用戶(hù)表,我們需要記錄下來(lái)用戶(hù)被訪(fǎng)問(wèn)的次數(shù),但訪(fǎng)問(wèn)次數(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 進(jìn)行判斷和修改

UPDATE test set visit_age=if(visit_num is null,1,visit_num+1) where id=1。

mysql 觸發(fā)器 update

有兩種方法,一種方法使用mysql的check table和repair table 的sql語(yǔ)句,另一種方法是使用MySQL提供的多個(gè)myisamchk, isamchk數(shù)據(jù)檢測(cè)恢復(fù)工具。前者使用起來(lái)比較簡(jiǎn)便。推薦使用。

1. check table 和 repair table

登陸mysql 終端:

mysql -uxxxxx -p dbname

check table tabTest;

如果出現(xiàn)的結(jié)果說(shuō)Status是OK,則不用修復(fù),如果有Error,可以用:

repair table tabTest;

進(jìn)行修復(fù),修復(fù)之后可以在用check table命令來(lái)進(jìn)行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。

2. myisamchk, isamchk

其中myisamchk適用于MYISAM類(lèi)型的數(shù)據(jù)表,而isamchk適用于ISAM類(lèi)型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類(lèi)型,這里以myisamchk為例子進(jìn)行說(shuō)明。當(dāng)發(fā)現(xiàn)某個(gè)數(shù)據(jù)表出現(xiàn)問(wèn)題時(shí)可以使用:

myisamchk tablename.MYI

進(jìn)行檢測(cè),如果需要修復(fù)的話(huà),可以使用:

myisamchk -of tablename.MYI

關(guān)于myisamchk的詳細(xì)參數(shù)說(shuō)明,可以參見(jiàn)它的使用幫助。需要注意的時(shí)在進(jìn)行修改時(shí)必須確保MySQL服務(wù)器沒(méi)有訪(fǎng)問(wèn)這個(gè)數(shù)據(jù)表,保險(xiǎn)的情況下是最好在進(jìn)行檢測(cè)時(shí)把MySQL服務(wù)器Shutdown掉。

-----------------------------

另外可以把下面的命令放在你的rc.local里面啟動(dòng)MySQL服務(wù)器前:

[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI

其中的/tmp/mysql.sock是MySQL監(jiān)聽(tīng)的Sock文件位置,對(duì)于使用RPM安裝的用戶(hù)應(yīng)該是/var/lib/mysql/mysql.sock,對(duì)于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實(shí)際情況進(jìn)行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫(kù)存放的位置。

需要注意的時(shí),如果你打算把這條命令放在你的rc.local里面,必須確認(rèn)在執(zhí)行這條指令時(shí)MySQL服務(wù)器必須沒(méi)有啟動(dòng)!檢測(cè)修復(fù)所有數(shù)據(jù)庫(kù)(表)

mysql觸發(fā)器更新獲取更新行所在id

寫(xiě)了個(gè),看適合你不

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字段修改后的對(duì)應(yīng)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表中的字段值,按你需求寫(xiě)吧。

分享題目:mysql怎么更新觸發(fā)器,mysql創(chuàng)建更新觸發(fā)器
分享鏈接:http://www.muchs.cn/article42/phjehc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)自適應(yīng)網(wǎng)站、企業(yè)建站小程序開(kāi)發(fā)、網(wǎng)站維護(hù)、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司