嘿,我正在使用这样的查询:
INSERT INTO likes(
likes_memory_id,
likes_comment_id,
likes_owner_id,
likes_like
) VALUES (
:likes_memory_id,
:likes_comment_id,
:likes_owner_id,
:likes_like)
每当用户单击“like”按钮时,此查询都会添加一个新行。所以这个查询允许多次点赞。为了防止这种情况,我可以使用 select 语句,并且我可能会在两个查询中成功,但我确信有更好的方法来做到这一点。 (我研究了 if notists 语句,但我不太了解)如何避免多次点赞?
最佳答案
最简单的是在您想要唯一的列上创建唯一索引;
CREATE UNIQUE INDEX uq_mem_own ON likes(
likes_memory_id, likes_owner_id
);
...并使用 INSERT IGNORE 插入,如果索引没有阻止,它将插入该值,否则忽略它;
INSERT IGNORE INTO likes(
likes_memory_id,
likes_owner_id,
likes_like
) VALUES (
:likes_memory_id,
:likes_owner_id,
:likes_like)
关于mysql - MySQL 重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23967252/