亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL通過觸發(fā)器解決數(shù)據(jù)庫中表的行數(shù)限制詳解及實例

 更新時間:2017年04月05日 11:08:54   投稿:lqh  
這篇文章主要介紹了MySQL通過觸發(fā)器解決數(shù)據(jù)庫中表的行數(shù)限制詳解及實例的相關(guān)資料,需要的朋友可以參考下

MySQL通過觸發(fā)器解決數(shù)據(jù)庫中表的行數(shù)限制詳解及實例

最近項目一個需求是對操作日志的數(shù)量限制為10萬條,超過十萬條便刪除最舊的那一條,保存數(shù)據(jù)庫中日志數(shù)量不超過10萬。
當(dāng)時我的第一想法是通過觸發(fā)器來做,便在數(shù)據(jù)庫中執(zhí)行了如下的SQL:

delimiter $
create trigger limitLog
before
insert
on OperationLog
for each row
begin
if (select count(*) from OperationLog) > 100000 then
delete from OperationLog limit 1;
end if;
end $

delimiter ;

看起來似乎沒什么問題,對于insert前執(zhí)行判斷,如果數(shù)量超過100000就執(zhí)行刪除。但在真正數(shù)據(jù)庫超過100000條,也就是開始執(zhí)行IF語句的時候就出問題,MySQL報錯:

ERROR 1442 (HY000): Can't update table 'OperationLog' in stored 
function/trigger because it is already used by statement which invoked 
this stored function/trigger.

查閱資料才知道,MySQL為了防止觸發(fā)器遞歸死循環(huán)的執(zhí)行,不允許在某張表的觸發(fā)器中直接對該表進行DML(SELECT,DELETE,UPDATE,INSERT)操作,當(dāng)然可以對其他表進行這樣操作。

觸發(fā)器限制的是執(zhí)行對該表的DML操作。觸發(fā)器可以在你的執(zhí)行前后來修改要執(zhí)行的這一行數(shù)據(jù),通過set關(guān)鍵字。

delimiter $
create trigger setLog
before
insert
on OperationLog
for each row
begin
set NEW.action = 'test';
end $

delimiter ;

上述語句表示在insert OpetationLog表的之前,更新insert這條數(shù)據(jù)的action字段值為test,NEW就表示新添加的這條字段,同樣的OLD就表示delete時的字段。而在update的時候NEW以及OLD同時都可以使用。

臨時觸發(fā)器

剛剛談到的觸發(fā)器(Triggers)是基于某個表所產(chǎn)生的事件觸發(fā)的,而臨時觸發(fā)器也稱為事件調(diào)度器是基于特定時間周期觸發(fā)來執(zhí)行某些任務(wù)。MySQL的事件調(diào)度器可以精確到每秒鐘執(zhí)行一個任務(wù),而操作系統(tǒng)的計劃任務(wù)(如:Linux下的CRON或Windows下的任務(wù)計劃)只能精 確到每分鐘執(zhí)行一次。對于一些對數(shù)據(jù)實時性要求比較高的應(yīng)用(例如:股票、賠率、比分等)就非常適合。

在使用這個功能之前必須確保event_scheduler已開啟,可執(zhí)行

 GLOBAL event_scheduler = 1;

或者

SET GLOBAL event_scheduler = ON;

要查看當(dāng)前是否已開啟事件調(diào)度器,可執(zhí)行如下SQL:

SHOW VARIABLES LIKE 'event_scheduler';

SELECT @@event_scheduler;


SHOW PROCESSLIST;

而對于本文一開始提到的問題,使用這種機制則可完美解決:

delimiter $
CREATE EVENT limitLog ON SCHEDULE EVERY 1 SECOND DO IF (select count(*) from OperationLog) > 100000 then delete from OperationLog limit 1;END IF $
 delimiter ;

親測有效

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • MySQL中的insert-on-duplicate語句舉例詳解

    MySQL中的insert-on-duplicate語句舉例詳解

    這篇文章主要給大家介紹了關(guān)于MySQL中insert-on-duplicate語句的相關(guān)資料,文中通過圖文以及代碼示例將insert-on-duplicate的用法介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-06-06
  • MySQL分區(qū)表的實現(xiàn)示例

    MySQL分區(qū)表的實現(xiàn)示例

    MySQL分區(qū)是將一張表分割成獨立的子表的技術(shù),本文主要介紹了MySQL分區(qū)表的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • centos7下安裝mysql的教程

    centos7下安裝mysql的教程

    這篇文章主要介紹了centos7安裝mysql的教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • 詳細介紹基于MySQL的搜索引擎MySQL-Fullltext

    詳細介紹基于MySQL的搜索引擎MySQL-Fullltext

    這篇文章主要詳細介紹基于MySQL的搜索引擎MySQL-Fullltext,需要用到C和C#以及JavaScript的知識,屬于MySQL的高階應(yīng)用,需要的朋友可以參考下
    2015-04-04
  • windows server2014 安裝 Mysql Applying Security出錯的完美解決方法

    windows server2014 安裝 Mysql Applying Security出錯的完美解決方法

    這篇文章給大家介紹了windows server2014 安裝 Mysql Applying Security出錯的完美解決方法,造成這種問題的主要原因是因為安裝一遍之后沒有卸載干凈,要解決這個問題需要注意以下幾點,具體解決方法,大家參考下本文
    2017-07-07
  • mysql 8.0.15 winx64壓縮包安裝配置方法圖文教程

    mysql 8.0.15 winx64壓縮包安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 8.0.15 winx64壓縮包安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Windows下MySql錯誤代碼1045的解決方法

    Windows下MySql錯誤代碼1045的解決方法

    這篇文章主要介紹了Windows下MySql錯誤代碼1045的解決方法,文中還包含了2個Linux下的解決方法,需要的朋友可以參考下
    2014-06-06
  • MySQL SHOW PROCESSLIST協(xié)助故障診斷全過程

    MySQL SHOW PROCESSLIST協(xié)助故障診斷全過程

    這篇文章主要給大家介紹了關(guān)于MySQL SHOW PROCESSLIST協(xié)助故障診斷的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Win10下免安裝版MySQL5.7的安裝和配置教程詳解

    Win10下免安裝版MySQL5.7的安裝和配置教程詳解

    這篇文章主要介紹了Win10下免安裝版MySQL5.7的安裝和配置教程詳解,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • Django2.* + Mysql5.7開發(fā)環(huán)境整合教程圖解

    Django2.* + Mysql5.7開發(fā)環(huán)境整合教程圖解

    這篇文章主要介紹了Django2.* + Mysql5.7開發(fā)環(huán)境整合教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09

最新評論