MySQL如何記錄一張表格的插入操作次數(shù)
問題描述
要求是表里插入記錄時(shí),name是日期+當(dāng)天它是第幾個(gè)插入的,比如20170408003。
我的解決辦法是:mysql里存一個(gè)count;一個(gè)觸發(fā)器,插入一條記錄后count+1;一個(gè)事件,每天0點(diǎn)count=0;每次插入數(shù)據(jù),name是當(dāng)前日期+(count+1)。
可是問題來了,這個(gè)count存在哪里呢?系統(tǒng)變量是不能創(chuàng)建的,用戶變量是會(huì)話級(jí)別的,客戶端連接斷了就沒了。
所以這個(gè)count該存在哪里呢,難不成新建一個(gè)表來存?
求大神指點(diǎn)~
問題解答
回答1:這個(gè)問題只要統(tǒng)計(jì)次數(shù)的話設(shè)一個(gè)自增id列就好了嘛,加一個(gè)時(shí)間戳字段,沒必要一定放一個(gè)字段里吧 要做統(tǒng)計(jì)的時(shí)候取每天的最大和最小id做個(gè)減法就出來了
回答2:我覺得再存一張表吧
回答3:個(gè)人可能會(huì)通過文件緩存做 (通過數(shù)據(jù)表,redis之類的邏輯差不多)
緩存數(shù)據(jù) [’count’ => 0, ’day’ => ’yyy-mm-dd’] //count => 記錄當(dāng)前記錄數(shù), day =>當(dāng)前記錄的是哪一天的數(shù)據(jù)
每次有新數(shù)據(jù)插入的時(shí)候根據(jù)day 確認(rèn)count是否需要重置并更新day為當(dāng)前日期
count++
更新緩存文件
如果有redis的話還是用它吧.
回答4:該問題并非統(tǒng)計(jì),實(shí)則是討論如何實(shí)現(xiàn)自增id。如果能夠使用redis該問題能夠得到妥善解決,因?yàn)閞edis是單線程的,且提供原子的incrAndGet()命令I(lǐng)NCR和原子的getAndSet()命令GETSET。
相關(guān)文章:
1. html5 - 如何實(shí)現(xiàn)帶陰影的不規(guī)則容器?2. javascript - 循環(huán)嵌套多個(gè)promise應(yīng)該如何實(shí)現(xiàn)?3. mysql優(yōu)化 - 關(guān)于mysql分區(qū)4. css - 移動(dòng)端字體設(shè)置問題5. objective-c - iOS開發(fā)支付寶和微信支付完成為什么跳轉(zhuǎn)到了之前開發(fā)的一個(gè)app?6. css3 - rem布局下,用戶瀏覽器的最小字號(hào)是12px怎么辦?7. vue.js - vue 打包后 nginx 服務(wù)端API請(qǐng)求跨域問題無法解決。8. 請(qǐng)教各位大佬,瀏覽器點(diǎn) 提交實(shí)例為什么沒有反應(yīng)9. 前端 - IE9 css兼容問題10. javascript - ionic2 input autofocus 電腦成功,iOS手機(jī)鍵盤不彈出
