我有两个表,一个存储文章和收到的票数:
| 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
一个用户每个交易只能投一票。我目前使用一个触发器,每次将记录插入到投票表中时,该触发器会增加articles表中的投票数。这是一个好的做法,还是我应该在我的应用程序(PHP基于Web的网站)中这样做?我还希望在一定数量的投票(voting_opened = N)之后停止投票,我是否应该使用触发器检查总票数(visitor_votes + member_votes> = 6000)然后更新文章行以设置voting_opened = N?或者这也是我应该在我的应用程序中做的事情?我需要一个可扩展的解决方案,因为我可能会有数百篇文章投票,而且我不想遇到投票数超过阈值的情况,因为更新速度不够快管他呢。有人可以对这种情况有所了解吗?
谢谢!
答案 0 :(得分: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在投票表中插入行。