MySQL如何記錄一張表格的插入操作次數(shù)
問題描述
要求是表里插入記錄時,name是日期+當(dāng)天它是第幾個插入的,比如20170408003。
我的解決辦法是:mysql里存一個count;一個觸發(fā)器,插入一條記錄后count+1;一個事件,每天0點(diǎn)count=0;每次插入數(shù)據(jù),name是當(dāng)前日期+(count+1)。
可是問題來了,這個count存在哪里呢?系統(tǒng)變量是不能創(chuàng)建的,用戶變量是會話級別的,客戶端連接斷了就沒了。
所以這個count該存在哪里呢,難不成新建一個表來存?
求大神指點(diǎn)~
問題解答
回答1:這個問題只要統(tǒng)計次數(shù)的話設(shè)一個自增id列就好了嘛,加一個時間戳字段,沒必要一定放一個字段里吧 要做統(tǒng)計的時候取每天的最大和最小id做個減法就出來了
回答2:我覺得再存一張表吧
回答3:個人可能會通過文件緩存做 (通過數(shù)據(jù)表,redis之類的邏輯差不多)
緩存數(shù)據(jù) [’count’ => 0, ’day’ => ’yyy-mm-dd’] //count => 記錄當(dāng)前記錄數(shù), day =>當(dāng)前記錄的是哪一天的數(shù)據(jù)
每次有新數(shù)據(jù)插入的時候根據(jù)day 確認(rèn)count是否需要重置并更新day為當(dāng)前日期
count++
更新緩存文件
如果有redis的話還是用它吧.
回答4:該問題并非統(tǒng)計,實(shí)則是討論如何實(shí)現(xiàn)自增id。如果能夠使用redis該問題能夠得到妥善解決,因為redis是單線程的,且提供原子的incrAndGet()命令I(lǐng)NCR和原子的getAndSet()命令GETSET。
相關(guān)文章:
1. javascript - sublime快鍵鍵問題2. javascript - 移動端上不能實(shí)現(xiàn)拖拽布局嗎?3. 實(shí)現(xiàn)bing搜索工具urlAPI提交4. javascript - ios返回不執(zhí)行js怎么解決?5. thinkPHP5中獲取數(shù)據(jù)庫數(shù)據(jù)后默認(rèn)選中下拉框的值,傳遞到后臺消失不見。有圖有代碼,希望有人幫忙6. index.php錯誤,求指點(diǎn)7. javascript - 如何判斷不同兩個對象觸發(fā)同一事件?8. angular.js - 單頁應(yīng)用(ng/vue)該如何監(jiān)聽用戶離開當(dāng)前頁面(或者路由)?9. javascript - react native在run-android時出現(xiàn)這個錯誤該怎么解決?大神賜教10. c++ - QWebEngineView加載url后直接點(diǎn)擊鏈接沒有反應(yīng)要怎么解決?

網(wǎng)公網(wǎng)安備