好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > MySQL通過觸發器解決數據庫中表的行數限制詳解及實例

MySQL通過觸發器解決數據庫中表的行數限制詳解及實例

熱門標簽:電銷機器人公眾號推送 昆明智能外呼系統中心 長安區違法建房地圖標注 電銷機器人說明書 智能電銷機器人靠譜么 南宋地圖標注黃河華山 安國在哪里辦理400電話 手機用地圖標注工具 地圖標注培訓

MySQL通過觸發器解決數據庫中表的行數限制詳解及實例

最近項目一個需求是對操作日志的數量限制為10萬條,超過十萬條便刪除最舊的那一條,保存數據庫中日志數量不超過10萬。
當時我的第一想法是通過觸發器來做,便在數據庫中執行了如下的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前執行判斷,如果數量超過100000就執行刪除。但在真正數據庫超過100000條,也就是開始執行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為了防止觸發器遞歸死循環的執行,不允許在某張表的觸發器中直接對該表進行DML(SELECT,DELETE,UPDATE,INSERT)操作,當然可以對其他表進行這樣操作。

觸發器限制的是執行對該表的DML操作。觸發器可以在你的執行前后來修改要執行的這一行數據,通過set關鍵字。

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

delimiter ;

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

臨時觸發器

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

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

 GLOBAL event_scheduler = 1;

或者

SET GLOBAL event_scheduler = ON;

要查看當前是否已開啟事件調度器,可執行如下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 ;

親測有效

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

您可能感興趣的文章:
  • mysql實現查詢最接近的記錄數據示例
  • 詳解MySQL恢復psc文件記錄數為0的解決方案
  • PHP+MySQL統計該庫中每個表的記錄數并按遞減順序排列的方法
  • MySQL數據庫查看數據表占用空間大小和記錄數的方法
  • MYSQL速度慢的問題 記錄數據庫語句
  • MySQL分區表的局限和限制詳解
  • MySQL 如何限制一張表的記錄數

標簽:東莞 吉安 長沙 潛江 江門 合肥 南昌 武漢

巨人網絡通訊聲明:本文標題《MySQL通過觸發器解決數據庫中表的行數限制詳解及實例》,本文關鍵詞  MySQL,通過,觸發器,解決,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL通過觸發器解決數據庫中表的行數限制詳解及實例》相關的同類信息!
  • 本頁收集關于MySQL通過觸發器解決數據庫中表的行數限制詳解及實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 男女靠逼视频| 好爽?好紧?老师别夹视频| 年轻的小姨子| 国产成人精品亚洲一区| 可以看黄色的视频| 1204金沙人妻懂旧版免费 | 欧美va亚洲va国产综合| 亚欧乱色一区二区三区| 在车里被弄了H野战高H漫画| 美女被狂捏胸亲嘴免费视频| 国语对白老女人8av| 日本熟人妻人伦A片悠田优 | 91精品国产自产91精品| 真人直播大片 免费| 天天精品| www.日本在线播放| 免费在线黄色网| 久久精品视频免费看| 欧洲人性生活| 国产美女网站| fnf涩涩同人18?网站动漫| 羞耻play公共场所调教| 被黑人c到高潮婬荡video| 国产成人精品cao在线| 果冻传媒麻豆精东艺人| 国精产品一区一区三区探花 | 粗暴肉进入120秒免费| 亲爱的快要你给我| 麻豆我精产国品一二三| 国产精品天天看特色大片不卡| 情欲诱惑在线观看| 亚洲香蕉网久久综合影视| 放荡日记高h| 我吸老师的丰满大乳奶水| 众筹乔依琳酒店与土豪的合作内容| 黄色片免费网站| 韩国理伦色情理论片在线观看 | 山村大炕乱肉续1—13集| 日本一区二区三区精品视频 | 养猫对女生下面的危害| 精品久久久久久中文|