INSERT ... ON DUPLICATE KEY UPDATE 針對主鍵或唯一鍵衝突時自動轉更新,省去「先查後決定」兩條 SQL 往返。
-- 統計表:日期+類型+ID 唯一,累加瀏覽數 INSERT INTO osc_visit_stats(stat_date, type, id, view_count) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE view_count = view_count + ?; -- 空間訪問記錄:space+user 唯一,更新計數、IP、時間 INSERT INTO osc_space_visit_records(space, user, visit_count, ip, visit_time) VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE visit_count = visit_count + 1, ip = ?, visit_time = NOW();
前提:目標表必須有 PRIMARY KEY 或 UNIQUE KEY,否則無法觸發重複鍵判斷。