描述:
我正在尝试将用户的首选项插入数据库。如果用户还没有放置任何东西,我想要一个insert,否则,我想要一个update. 我知道我可以在创建用户时插入默认值,而不是专门使用update,但这增加了另一个查询(我认为)
问题:
我已经阅读了,ON DUPLICATE KEY UPDATE但我不明白。这几乎是我的确切问题,但没有答案。答案说:
只要您将正确的列定义为 UNIQUE KEY 或 PRIMARY KEY,它听起来确实适用于您想要做的事情。
如果我insert像这样做一个简单的事情:
INSERT INTO table (color, size) VALUES ('blue', '18') ...
那将如何产生DUPLICATE KEY?据mysql所知,它只是另一个插入,并且id是自动递增的。我将表中的主键设置为唯一的,但insert不会对此进行检查,对吧?
桌子:
CREATE TABLE `firm_pref` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`firm_id` int(9) NOT NULL, //user_id in this case
`header_title` varchar(99) NOT NULL,
`statement` varchar(99) NOT NULL,
`footer_content` varchar(99) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1