MySQL - 在ON DUPLICATE KEY的两列上创建一个UNIQUE索引
问题描述:
我有一个包含4列的表。我希望能够在创建时插入或更新值列(我不关心索引行ID)。MySQL - 在ON DUPLICATE KEY的两列上创建一个UNIQUE索引
CREAT TABLE tablename (
id, (primary)
user_id, (index)
setting_id, (index)
value (index)
);
本来我打算给每个我想保存的值时运行“REPLACE INTO ...”查询。但后来我read about the problems,而是选择了一个INSERT INTO ... ON DUPLICATE KEY UPDATE。
问题是,我没有单列“INSERT INTO ... ON DUPLICATE KEY UPDATE”来判断这是一个新行还是存在一个需要存在的行更新。
所以我想我会使用一个唯一的密钥是由该行唯一的(
CREATE UNIQUE INDEX index_name ON table(user_id, setting_id);
但是,我不知道应该怎么推进,如何做两列的组合构建我的查询,检查,试图找出一排已经与这两个字段值时存在这种新的索引
INSERT INTO `tablename` (value, user_id, setting_id) VALUES (1,34,15) ON DUPLICATE KEY UPDATE
:编辑:
通过删除ID主列LEA ving only(setting_id,user_id,&值)我能够在(setting_id,user_id)上创建一个PRIMARY索引,然后执行下面的查询。 more help here。
INSERT INTO tablename (user_id, setting_id, value)
VALUES (42, 1, 12)
ON DUPLICATE KEY UPDATE value = 12
答
你最终会看起来像这样的查询...
INSERT INTO table (value,user_id,setting_id) VALUES (1,34,15)
ON DUPLICATE KEY UPDATE value = 1, user_id = 34, setting_id = 15;