How to check the number of user reputation before storing his vote via trigger

人走茶凉 提交于 2019-12-30 12:21:25

问题


I have two tables. Posts, Votes. I have a column in the Posts table named total_votes. Also I have a trigger for updating it when user gives a vote to the post.

Here is my trigger:

delimiter //
CREATE TRIGGER total_votes AFTER INSERT ON Votes
 FOR EACH ROW begin 
   update posts set total_votes = total_votes+new.value
   where  post.id = new.post_id; 
end //

So I need to check the number of user reputation, that If they are more than 50, then the vote stores, else, the vote not store. how can I do that ?

Actually I can write this: BEFORE INSERT

If ((select reputation from users where id = new.user_id) < 50) then
  SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'your rep are low';
end if;

Now I have two problem, One: how can I use of that error (your rep are low) in my website ? (via php), and two: How can I deactivate total_votes trigger (AFTER INSERT) if the above condition was true ?

来源:https://stackoverflow.com/questions/32157945/how-to-check-the-number-of-user-reputation-before-storing-his-vote-via-trigger

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!