描述:
我正在尝试将用户的首选项插入数据库。如果用户还没有放置任何东西,我想要一个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