會造成重複鍵UPDATE語句是什麼2,而不是1,增加值, 這裏是使用SQL IM:爲什麼在DUPLICATE KEY UPDATE語句中將值增加2而不是1?
INSERT INTO banner_view (banner_id,date,views)
VALUES ('10',CURDATE(),'1')
ON DUPLICATE KEY UPDATE views=(views+1)
下面是數據庫模式:
CREATE TABLE `banner_view` (
`banner_id` int(11) UNSIGNED NOT NULL ,
`date` date NOT NULL ,
`views` int(10) UNSIGNED NOT NULL ,
PRIMARY KEY (`banner_id`, `date`),
FOREIGN KEY (`banner_id`) REFERENCES `banner` (`banner_id`) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE INDEX `banner_id` USING BTREE (`banner_id`, `date`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=COMPACT
;
我已檢查MySQL的日誌爲了確保查詢被正確調用3次,但輸出將是6,可能會出錯?
UPDATE: 這種方法被稱爲像智者模板中: {app_banner :: getRandomBanner()}
什麼輸出是6?你從哪裏得到這個輸出?你在做什麼查詢來獲得輸出結果?這是從PHP調用?你能發佈一個更完整的代碼示例嗎? – 2010-12-23 15:25:27
我直接檢查數據庫,價值將始終是預期的兩倍 – Nazariy 2010-12-23 15:27:27