MySQL如何記錄一張表格的插入操作次數(shù)
問(wèn)題描述
要求是表里插入記錄時(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)。
可是問(wèn)題來(lái)了,這個(gè)count存在哪里呢?系統(tǒng)變量是不能創(chuàng)建的,用戶變量是會(huì)話級(jí)別的,客戶端連接斷了就沒(méi)了。
所以這個(gè)count該存在哪里呢,難不成新建一個(gè)表來(lái)存?
求大神指點(diǎn)~
問(wèn)題解答
回答1:這個(gè)問(wèn)題只要統(tǒng)計(jì)次數(shù)的話設(shè)一個(gè)自增id列就好了嘛,加一個(gè)時(shí)間戳字段,沒(méi)必要一定放一個(gè)字段里吧 要做統(tǒng)計(jì)的時(shí)候取每天的最大和最小id做個(gè)減法就出來(lái)了
回答2:我覺(jué)得再存一張表吧
回答3:個(gè)人可能會(huì)通過(guò)文件緩存做 (通過(guò)數(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:該問(wèn)題并非統(tǒng)計(jì),實(shí)則是討論如何實(shí)現(xiàn)自增id。如果能夠使用redis該問(wèn)題能夠得到妥善解決,因?yàn)閞edis是單線程的,且提供原子的incrAndGet()命令I(lǐng)NCR和原子的getAndSet()命令GETSET。
相關(guān)文章:
1. Python如何播放還存在StringIO中的MP3?2. javascript - 請(qǐng)教如何獲取百度貼吧新增的兩個(gè)加密參數(shù)3. (python)關(guān)于如何做到按win+R再輸入文件文件名就可以運(yùn)行?4. Python爬蟲(chóng)如何爬取span和span中間的內(nèi)容并分別存入字典里?5. python - 編碼問(wèn)題求助6. python - 關(guān)于計(jì)算日期的問(wèn)題7. 網(wǎng)頁(yè)爬蟲(chóng) - Python 爬蟲(chóng)中如何處理驗(yàn)證碼?8. mysql - 分庫(kù)分表、分區(qū)、讀寫分離 這些都是用在什么場(chǎng)景下 ,會(huì)帶來(lái)哪些效率或者其他方面的好處9. mysql 一個(gè)sql 返回多個(gè)總數(shù)10. mysql - 如何減少使用或者不用LEFT JOIN查詢?
