2009-07-28 115 views
3

我可能要么误解了如何使用上的重复KEY语法,或者我的数据库结构需要做一些工作,但在这里不用。MySQL的INSERT/UPDATE重复键

我有一个表(预订-甲基)其表示与另一个表(预订)相关联的元数据,在登记表的不同行可以或可以不具有与它们在其他表中相关联的特定元数据。

的预约 - 间表有以下的列,meta_id(主键),booking_id,键和值。

从我的理解,使用ON DUPLICATE KEY我需要知道在这种情况下是meta_id,通常情况并非如此,我试图简单地推动一个键,值对使用booking_id,所以如果特定的密钥存在,那么它的替换将被插入。

目前,我有一个单独的查询,尽量选择该行,如果找到,那么我更新,如果没有,那么它的INSERT。

是否有这样做在一个查询中插入/更新,而无需使用对重复KEY或有我错过了这一个一招的方法吗?

回答

6

如果可能,我会完全删除meta_id列,并将booking_idkey转换为复合主键。这将节省您的桌面空间,允许使用ON DUPLICATE KEY,并且一般来说更干净。

+1

谢谢,这是完美的,我不知道为什么,但我一直在告诉自己,我需要的meta_id,细想它无处使用! – Duncan 2009-07-28 22:18:05