我有這樣的SQL這是假設如果項目不存在更新表或插入它,如果它不插不上節省重複
INSERT INTO `mlm_user_settings` (`name`, `value`,`user_id`)
VALUES ('notify_options','opt_none','7'),
('chk_signup','0','7'),
('chk_activate','0','7'),
('action','save','7'),
('chk_acct','0','7'),
('chk_message','0','7')
ON DUPLICATE KEY UPDATE `value` = VALUES(`value`)
我有index (name , user_id)
的唯一約束它不更新的值,但僅適用於新的價值觀 的插入可能是什麼問題
表架構
CREATE TABLE `mlm_user_settings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`value` varchar(200) NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `user_id` (`user_id`,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
是表中已經存在的那些值嗎? – Mihai
某些已經存在,例如,如果(name,user_id)上有一個唯一索引,則某些零將被更新爲'1' – Smith
,則只有當這2列中的組合值是該值時,纔會觸發ON DUPLICATE相同 - 不是您插入的任何值的情況。 – Mihai