会造成重复键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