相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡(jiǎn)單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說(shuō)明
- thinkPHP5框架實(shí)現(xiàn)分頁(yè)查詢功能的方法示例
- PHP中單雙號(hào)與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對(duì)Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫(xiě)文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
完美解決Thinkphp3.2中插入相同數(shù)據(jù)的問(wèn)題

問(wèn)題描述
今天在使用TP3.2插入數(shù)據(jù)的時(shí)候,為了避免插入相同的數(shù)據(jù)(所謂相同的數(shù)據(jù),其主鍵相同或者是唯一索引的字段相同),我創(chuàng)建的索引如下圖,主鍵索引為自增字段,不可能出現(xiàn)重復(fù),即唯一索引可能會(huì)出現(xiàn)重復(fù),我希望的是uid,year,mounth,day 這三個(gè)字段出現(xiàn)相同的話,就更新當(dāng)前記錄。
問(wèn)題解決辦法
在之前面對(duì)這樣的問(wèn)題的時(shí)候,我們知道,MySQL提供了ON DUPLICATE KEY UPDATE或者REPLACE INTO來(lái)解決。
使用ON DUPLICATE KEY UPDATE
插入數(shù)據(jù)之前,表中就一條記錄,如下圖
SQL語(yǔ)句如下,當(dāng)插入記錄時(shí)候,與表中已有記錄相同,則更新改條記錄,否則插入記錄。
INSERT INTO `work_log` ( `uid`, `year`, `mounth`, `day`, `status` ) VALUES (1, 2016, 6, 3, 1) ON DUPLICATE KEY UPDATE `status` = VALUES (`status`), `updated_ts` = NOW();