Что может привести к тому, что оператор ON DUPLICATE KEY UPDATE увеличит значение на 2 вместо 1, здесь SQL используется с использованием:
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
;
Iпроверили журнал MySQL, чтобы убедиться, что запрос вызывается ровно 3 раза, но результат будет 6, что может быть неправильным?
ОБНОВЛЕНИЕ: этот метод вызывается внутри шаблона smarty, например: {app_banner :: getRandomBanner ()}