我有一个用户元数据表,我存储一些额外的值。我需要:插入或如果列组合存在更新
A)插入一个新的user_id/meta_type组合+值
OR
B)如果已经是USER_ID/meta_type组合则刚刚更新它的值
重要注意:
我发现MySQL的“ON DUPLICATE KEY UPDATE
” - 但从我从手册中了解,它似乎只检查PRIMARY KEY
所以曲线注意是:
A)有没有办法做一些像“在DUPLICATE COLUMN1和COLUMN2更新值”?
B)MySQL InnoDB可以在多列上创建PRIMARY KEY
吗?
(例如meta_id + USER_ID + meta_type将是PRIMARY KEY
)
C)难道我明白ON DUPLICATE KEY UPDATE
手册错误?
不,它不检查主键。任何独特的索引将起作用。 – Barmar
而且您可以在多个列上有唯一的索引。 – Barmar
是的,但B。你可以有复合主键。 'CREATE TABLE t(a INTEGER,b INTEGER,PRIMARY KEY(a,b))' – Amadan