我有一个用户元数据表,我存储了一些额外的值。我需要:
A)插入新的user_id / meta_type组合+值
OR
B)如果已经有user_id / meta_type组合,那么只需更新其值
重要提示:
我发现了MySQL的“ON DUPLICATE KEY UPDATE
” - 但是根据我从手册中的理解,它似乎只检查PRIMARY KEY
所以问题是:
A)有没有办法做“ON DUPLICATE COLUMN1和COLUMN2 UPDATE值”?
B)MySQL InnoDB是否可以在多个列上创建PRIMARY KEY
?
(例如meta_id + user_id + meta_type将是PRIMARY KEY
)
C)我是否理解ON DUPLICATE KEY UPDATE
手册错了?
答案 0 :(得分:0)
如果指定ON DUPLICATE KEY UPDATE,并且插入的行将导致UNIQUE索引或PRIMARY KEY中出现重复值,则MySQL将执行旧行的UPDATE。例如,如果列a声明为UNIQUE并包含值1,则以下两个语句具有类似的效果:
INSERT INTO表(a,b,c)VALUES(1,2,3) ON DUPLICATE KEY UPDATE c = c + 1;
等效更新查询如下,
UPDATE表SET c = c + 1 WHERE a = 1;
如果a和b列是唯一的,则等效的更新查询将是
UPDATE表SET c = c + 1 WHERE a = 1 OR b = 2 LIMIT 1;