我有一个像这样的表结构
id,f1,f2,f3,f4
id是主键,f1和f3是唯一键
我的问题是当我使用ON DUPLICATE KEY UPDATE
考虑评估哪个关键
考虑查询
INSERT INTO t1 (f1,f2,f4) VALUES (.....) ON DUPLICATE KEY UPDATE f4=...."
如上所示,它会考虑成为f1的关键吗?或f3或id
如果我有这样的查询
INSERT INTO t1 (f1,f2,f3,f4) VALUES (.....) ON DUPLICATE KEY UPDATE f4=...."
它会考虑什么关键?
谢谢你们:)
答案 0 :(得分:1)
来自MySQL manual,强调我的:
如果指定ON DUPLICATE KEY UPDATE,则插入一行 会在UNIQUE索引或PRIMARY KEY 中导致重复值,an 执行旧行的更新。
导致表上任何唯一约束重复的插入尝试将导致触发替代操作。请注意,建议(通常)不要将ON DUPLICATE KEY语法与包含多个唯一索引的表一起使用:
通常,您应该尽量避免使用ON DUPLICATE KEY UPDATE 具有多个唯一索引的表的子句。