我有以下多对多表:
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可以在此表中多次显示。有什么方法可以只对一个查询执行此操作吗?
谢谢
答案 0 :(得分:0)
根据您的帖子,对于相同的user_id
和comment_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