首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复更新时插入,始终插入

重复更新时插入,始终插入
EN

Stack Overflow用户
提问于 2014-01-27 17:11:01
回答 1查看 65关注 0票数 1

我有下一个查询:

代码语言:javascript
复制
Insert into tableA (userID, switch, plateType, groupVal, brokeage) 
Select 'UserB', switch, plateType, groupVal, brokeage from tableA  where userID = 'UserA' 
      on duplicate key Update brokeage = (Select brokeage from tableA  where userID = 'UserA')

tableA的主键是一个名为id的字段,它是唯一的和自动递增的。这个查询的问题是,当行已经存在时,它总是插入,而不是更新。我在查询中不使用id,我不知道这是否是problem...if

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-27 17:36:36

为了使ON DUPLICATE KEY操作发生,MySQL需要知道它试图插入您认为是唯一的列的副本。这不仅涉及PRIMARY KEY,还涉及任何您认为是唯一的列的组合。由于您担心userID, plateType, groupVal的组合是唯一的,所以为这三列创建一个复合索引。那么您的INSERT INTO...ON DUPLICATE KEY UDPATE应该可以按照您的预期工作。

这将将正确的唯一索引添加到现有表中。当在INSERT上找到列的组合时,MySQL将采取ON DUPLICATE KEY操作。

代码语言:javascript
复制
ALTER TABLE `tableA` ADD UNIQUE KEY `idx_user_plate_group` (`userID`, `plateType`, `groupVal`);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21387150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档