我可能误解了如何使用ON DUPLICATE KEY语法,或者我的数据库结构需要一些工作但是这里有。
我有一个表(bookings-meta)表示与另一个表(预订)相关联的元数据,预订表中的不同行可能有也可能没有在另一个表中与它们相关联的特定元数据。
bookings-meta表包含以下列:meta_id(主键),booking_id,键和值。
根据我的理解,使用ON DUPLICATE KEY我需要知道在这种情况下meta_id是什么,通常不是这种情况,我试图简单地使用booking_id将键,值对推送到表中,所以如果特定的密钥存在,则替换它,否则插入它。
目前我有一个单独的查询试图选择行,如果找到它然后我更新,如果不是那么它的INSERT。
有没有办法在不使用ON DUPLICATE KEY的情况下在一个查询中执行插入/更新,或者我错过了使用此功能的技巧?
答案 0 :(得分:6)
如果可能,我会完全删除meta_id
列,并将booking_id
和key
转换为复合主键。这样可以节省表格中的空间,允许使用ON DUPLICATE KEY
,并且通常更清洁。