2

我有两张表,一张存储文章和它收到的票数:

| article_id | visitor_votes | member_votes | voting_opened |
-------------------------------------------------------------
| 1          | 12            | 394          | Y             |
| 3          | 94            | 5821         | Y             |

我还有另一个表格,它记录了哪个用户投票给了哪篇文章

| vote_id | user_id | article_id | date    |
--------------------------------------------
| 1       | 12      | 1          | 7/28/2012
| 2       | 23      | 3          | 7/28/2012

一位用户每笔交易只能投一票。我目前使用的触发器会在每次将记录插入投票表时增加文章表中的投票数。这是一个好的做法还是我应该在我的应用程序(基于 PHP Web 的网站)中这样做?我也想在达到一定票数后停止投票(voting_opened = N),我是否应该使用触发器检查总票数(visitor_votes + member_votes >= 6000)然后更新文章行以设置voting_opened = N?或者这也是我应该在我的应用程序中做的事情?我需要一个可扩展的解决方案,因为我可能会为数百篇文章获得数千票,而且我不想遇到投票数超过阈值的情况,因为更新没有足够快地更新管他呢。

谢谢!

4

1 回答 1

1

两种解决方案都是有效的,并且应该同样有效。

您可以在应用程序中尝试这样的事情

UPDATE articles SET 
    visitor_votes = visitor_votes + 1
    voting_opened = IF(visitor_votes + member_votes >= 6000, 'N', 'Y')
WHERE 
article_id = xxxx
AND voting_opened = 'Y'

然后检查受影响的行,如果它> 0,则将该行插入投票表中。

于 2012-07-29T02:28:04.840 回答