基本上我所拥有的是一个用户每10条评论获得奖励的系统。因此,在数据库中,一个表捕获评论,另一个表添加每10个评论的奖励。例如,如果用户添加了40条评论,那么它们将在表2中有4个奖励/ 4行。
这对我来说听起来很简单,但我似乎无法想象。想到可能有一个模数运算符可以帮助,但我需要每次在表2中添加一个新行,而不是覆盖,或每次重写行。
帮助表示赞赏;我感觉它就在我面前!
答案 0 :(得分:2)
奖励是否唯一,以便您实际 在单独的表格中跟踪它们?或者您可以只计算用户在需要号码时所做的评论数量吗?
如果您确实需要在单独的表中跟踪奖励,请考虑触发器:
create trigger insert_trigger after insert on comments_table
for each row begin
if (select count(*) from comments_table where user_id = new.user_id) mod 10 = 0 then
insert into rewards_table (user_id) values (new.user_id);
end if;
end;
如果您允许从评论表中删除,您还需要在评论表上使用相应的on delete
触发器来测试用户是否仍有正确的奖励数量,如果没有,则您需要必须决定删除哪个。
答案 1 :(得分:0)
每次发布评论时,您都必须计算用户添加的评论数量。如果评论%10 == 0,那么您必须在表2中添加一个新行(用于奖励)。
答案 2 :(得分:0)
if number_of_comments % 10 == 0
- >在奖励表中插入这就是我应该这样做的方式。
答案 3 :(得分:0)
我猜你有第一个表的模型,或者至少是一个执行插入的函数。您可以为该功能提供更多功能,并执行以下操作:
$current = count_your_current_coments();
if (fmod($current, 10) == 0) {
insert_into_second_Table();
}
答案 4 :(得分:0)
我的想法是你需要将额外的字段作为标记。您可以将其命名为奖励,这是枚举。 “是”表示“是”或“否”表示否。每次插入注释时,都可以保存默认值“N”并检查数据库。
SELECT count(my_comment) FROM comments WHERE rewarded = 'N';
使用modulo检查它是否达到10条评论。如果是,请在另一个表中插入一行,并将奖励字段更新为'N'到'Y'