Здравствуйте,
CREATE TABLE `user_notification` (
`id` int(10) unsigned NOT NULL auto_increment,
`user_id` int(10) unsigned NOT NULL,
`article_id` int(10) unsigned default NULL,
`magazine_id` int(10) unsigned default NULL,
`user_page_id` int(10) unsigned default NULL,
`date_time` datetime NOT NULL,
`unix_date` int(10) unsigned NOT NULL,
`comment_id` int(10) unsigned NOT NULL,
`is_subscribed` enum('1','0') collate utf8_unicode_ci NOT NULL,
`status` enum('send','not_send') collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user_id` (`user_id`,`article_id`,`magazine_id`,`user_page_id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
Как мне сделать чтобы update был только если попадаются одинаковые значения в колонках: `user_id`,`article_id`,`magazine_id`,`user_page_id`
например уже есть эти поля со значениями:
1, 2, NULL, NULL
и я делаю
INSERT INTO `user_notification`
(`user_id`,`article_id`,`magazine_id`,`user_page_id`,`date_time`,`unix_date`,`comment_id`,`is_subscribed`,`status`)
values
(1,2,NULL,NULL,NOW(),UNIX_TIMESTAMP(),3,'1','not_send')
ON DUPLICATE KEY UPDATE
`date_time` = NOW()
, unix_date = UNIX_TIMESTAMP()
, comment_id = 4
и выполнится в запросе должна ветка update
а если хотя бы в одном из этих полей есть различия, то выполнился бы insert…