当三个重复但不只是一个时,重复列上的更新

时间:2014-11-10 19:17:23

标签: mysql sql duplicates upsert

我实现了一个使用x / y / z主键结构的MySQL数据库,其中x和y是外键,z是本地键。

我的困境是我不希望激活重复的案例,除非所有三个案件都重复。假设我有这个表结构。

   X    |    Y    |    Z    | Description
  34    |   F4    |   25    | This is a row
  34    |   F4    |   26    | This is also row
  C6    |   71    |   9A    | This is a row too

如果我想插入

  x=34,y=F5,z=25,description=This is a row as well

它会插入新行,因为虽然x和z是重复的,但y不是。 但是,如果我发送了

  x=34,y=F4,z=25,description=This is the first row

它应该更新条目说明。

我可以使用INSERT INTO ...在DUPLICATE KEY上执行此操作,还是需要执行更复杂的操作?

1 个答案:

答案 0 :(得分:3)

当然可以。您只需将(x,y,z)声明为主键或唯一键:

 create unique index idx_table_x_y_z on table(x, y, z)

如果表中已存在三元组,则可以使用on duplicate key insert