Advertisement
Guest User

Untitled

a guest
Feb 28th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. ImageId (int)
  2. VotesUp (int)
  3. VotesDown (int)
  4.  
  5. ImageId (int)
  6. UserId (int)
  7. Score (int ) [-1,0,+1]
  8.  
  9. alter TRIGGER [dbo].[UpvotesChanged]
  10. ON [dbo].[Upvotes]
  11. FOR INSERT, UPDATE
  12. AS
  13. BEGIN
  14. IF EXISTS( SELECT 1 FROM DELETED ) --update
  15. BEGIN
  16.  
  17. UPDATE imgs
  18. SET VotesUp = CASE
  19.  
  20. WHEN deleted.Score = 1 AND INSERTED.score =0 THEN ISNULL(VotesUp, 0) -1
  21. WHEN deleted.Score = 1 AND INSERTED.score =-1 THEN ISNULL(VotesUp, 0) -1
  22. WHEN deleted.Score = 0 AND INSERTED.score =1 THEN ISNULL(VotesUp, 0) +1
  23. WHEN deleted.Score = -1 AND INSERTED.score =1 THEN ISNULL(VotesUp, 0) +1
  24. ELSE ISNULL(VotesUp, 0)
  25. END
  26. ,
  27. VotesDown = CASE
  28.  
  29. WHEN deleted.Score = 0 AND INSERTED.score =-1 THEN ISNULL(VotesDown, 0) +1
  30. WHEN deleted.Score = 1 AND INSERTED.score =-1 THEN ISNULL(VotesDown, 0) +1
  31. WHEN deleted.Score = -1 AND INSERTED.score =1 THEN ISNULL(VotesDown, 0) -1
  32. WHEN deleted.Score = -1 AND INSERTED.score =0 THEN ISNULL(VotesDown, 0) -1
  33. ELSE ISNULL(VotesDown, 0)
  34. END
  35. FROM Images imgs
  36. JOIN DELETED
  37. ON imgs.ImageId = deleted.ImageId
  38. JOIN INSERTED ON imgs.ImageId = INSERTED.ImageId
  39.  
  40.  
  41. END
  42. ELSE
  43. --insert
  44. BEGIN
  45. UPDATE imgs
  46. SET VotesUp = CASE
  47. WHEN INSERTED.Score = 1
  48. THEN ISNULL(VotesUp, 0) + 1
  49. ELSE VotesUp
  50. END,
  51. VotesDown = CASE
  52. WHEN INSERTED.Score = -1
  53. THEN ISNULL(VotesDown, 0) + 1
  54. ELSE VotesDown
  55. END
  56. FROM Images imgs
  57. JOIN INSERTED
  58. ON imgs.ImageId = INSERTED.ImageId
  59. END
  60. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement