我实现了一个使用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上执行此操作,还是需要执行更复杂的操作?
答案 0 :(得分:3)
当然可以。您只需将(x,y,z
)声明为主键或唯一键:
create unique index idx_table_x_y_z on table(x, y, z)
如果表中已存在三元组,则可以使用on duplicate key insert
。