mysql ON DUPLICATE KEY UPDATE,一次检查 2 列

mysql ON DUPLICATE KEY UPDATE, check 2 columns at a time

提问人:chiefpika 提问时间:11/16/2023 更新时间:11/16/2023 访问量:32

问:

假设我的表中有 4 列

ID int(11) AI PK
BANK_ID int(11)
BANK_BRANCH_CODE varchar(255)
BANK_BRANCH_NAME varchar(255)

如果组合已经存在,我想更新,否则插入新数据。BANK_BRANCH_NAMEBANK_ID and BANK_BRANCH_CODE

这是我得到的

INSERT INTO bank_table (BANK_ID, BANK_BRANCH_CODE, BANK_BRANCH_NAME) VALUES 
(bankId, bankBranchCode, bankBranchName) ON DUPLICATE KEY UPDATE BANK_BRANCH_NAME = bankBranchName;

但似乎它只是不断插入新数据。 我的查询有什么问题吗?

on-duplicate-key(mysql 重复密钥

评论

0赞 chiefpika 11/16/2023
哦,像这样的东西?ALTER TABLE bank_table ADD CONSTRAINT unique_bank_branch UNIQUE (BANK_ID, BANK_BRANCH_CODE);
1赞 chiefpika 11/16/2023
它正在;)工作谢谢

答:

1赞 mandy8055 11/16/2023 #1

您需要添加对 和 组合的约束。仅当存在唯一约束或主键冲突时才有效。UNIQUEBANK_IDBANK_BRANCH_CODEON DUPLICATE KEY UPDATE

ALTER TABLE bank_table
ADD UNIQUE (BANK_ID, BANK_BRANCH_CODE);
# other queries...

DBFIDDLE的

评论

1赞 ysth 11/16/2023
请注意,当 bank_id 或 bank_branch_code 为 null 时,这将不起作用。
0赞 mandy8055 11/16/2023
@ysth感谢您指出这一点。你是对的。