mysql具有重复键引用的多个唯一键

时间:2013-04-08 21:58:33

标签: php mysql mysqli

我有一个像这样的表结构

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=...."

它会考虑什么关键?

谢谢你们:)

1 个答案:

答案 0 :(得分:1)

来自MySQL manual,强调我的:

  

如果指定ON DUPLICATE KEY UPDATE,则插入一行   会在UNIQUE索引或PRIMARY KEY 中导致重复值,an   执行旧行的更新。

导致表上任何唯一约束重复的插入尝试将导致触发替代操作。请注意,建议(通常)不要将ON DUPLICATE KEY语法与包含多个唯一索引的表一起使用:

  

通常,您应该尽量避免使用ON DUPLICATE KEY UPDATE   具有多个唯一索引的表的子句。