如果存在,请更新它,否则插入-不带主键或唯一键(一个查询)

时间:2019-06-26 17:24:23

标签: mysql

我有以下多对多表:

id   user_id comment_id like
1    1       1          true
2    1       2          false
3    2       1          true
4    2       2          true    

我正在尝试更新一条记录(例如user_id = 1和comment_id = 1),否则创建一条新记录。我不能对user_id和comment_id列使用唯一键,因为相同的ID可以在此表中多次显示。有什么方法可以只对一个查询执行此操作吗?

谢谢

1 个答案:

答案 0 :(得分:0)

根据您的帖子,对于相同的user_idcomment_id组合,您永远不应有两行,使其成为唯一键的理想候选人:

ALTER TABLE mytable
ADD CONSTRAINT user_comment_unq UNIQUE (user_id, comment_id);

一旦有了此约束,就可以将insert语句与on duplicate key update子句一起使用。例如:

INSERT INTO mytable (`user_id`, `comment_id`, `like`)
VALUES (1, 1, TRUE)
ON DUPLICATE KEY UPDATE `like` = TRUE