MySQL ON DUPLICATE KEY UPDATE仅插入不更新,组合键判断失效求助
问题分析与解决方案
你的SQL语句无法触发更新操作的核心原因是缺少唯一约束:
ON DUPLICATE KEY UPDATE 仅在插入的行触发主键或唯一键冲突时才会执行更新逻辑。当前你的表仅将自增的ID设为主键,每次插入时ID都会自动生成新值,不会产生冲突;而你期望用来判断重复的BANK_ID与BANK_BRANCH_CODE组合没有设置唯一约束,数据库会认为每次插入的都是新数据,因此只会持续执行插入操作。
解决步骤
- 为
BANK_ID和BANK_BRANCH_CODE添加联合唯一索引,让数据库能识别这两个字段的组合重复:
ALTER TABLE bank_table ADD UNIQUE INDEX idx_bank_branch (BANK_ID, BANK_BRANCH_CODE);
- 重新执行你原来的
INSERT语句即可触发预期的逻辑:
INSERT INTO bank_table (BANK_ID, BANK_BRANCH_CODE, BANK_BRANCH_NAME) VALUES (bankId, bankBranchCode, bankBranchName) ON DUPLICATE KEY UPDATE BANK_BRANCH_NAME = bankBranchName;
此时,当BANK_ID与BANK_BRANCH_CODE的组合已存在时,会触发唯一键冲突,执行UPDATE语句更新BANK_BRANCH_NAME;若组合不存在,则插入新数据。
内容的提问来源于stack exchange,提问作者chiefpika
相关产品推荐
相关产品推荐

