Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ImageId (int)
- VotesUp (int)
- VotesDown (int)
- ImageId (int)
- UserId (int)
- Score (int ) [-1,0,+1]
- alter TRIGGER [dbo].[UpvotesChanged]
- ON [dbo].[Upvotes]
- FOR INSERT, UPDATE
- AS
- BEGIN
- IF EXISTS( SELECT 1 FROM DELETED ) --update
- BEGIN
- UPDATE imgs
- SET VotesUp = CASE
- WHEN deleted.Score = 1 AND INSERTED.score =0 THEN ISNULL(VotesUp, 0) -1
- WHEN deleted.Score = 1 AND INSERTED.score =-1 THEN ISNULL(VotesUp, 0) -1
- WHEN deleted.Score = 0 AND INSERTED.score =1 THEN ISNULL(VotesUp, 0) +1
- WHEN deleted.Score = -1 AND INSERTED.score =1 THEN ISNULL(VotesUp, 0) +1
- ELSE ISNULL(VotesUp, 0)
- END
- ,
- VotesDown = CASE
- WHEN deleted.Score = 0 AND INSERTED.score =-1 THEN ISNULL(VotesDown, 0) +1
- WHEN deleted.Score = 1 AND INSERTED.score =-1 THEN ISNULL(VotesDown, 0) +1
- WHEN deleted.Score = -1 AND INSERTED.score =1 THEN ISNULL(VotesDown, 0) -1
- WHEN deleted.Score = -1 AND INSERTED.score =0 THEN ISNULL(VotesDown, 0) -1
- ELSE ISNULL(VotesDown, 0)
- END
- FROM Images imgs
- JOIN DELETED
- ON imgs.ImageId = deleted.ImageId
- JOIN INSERTED ON imgs.ImageId = INSERTED.ImageId
- END
- ELSE
- --insert
- BEGIN
- UPDATE imgs
- SET VotesUp = CASE
- WHEN INSERTED.Score = 1
- THEN ISNULL(VotesUp, 0) + 1
- ELSE VotesUp
- END,
- VotesDown = CASE
- WHEN INSERTED.Score = -1
- THEN ISNULL(VotesDown, 0) + 1
- ELSE VotesDown
- END
- FROM Images imgs
- JOIN INSERTED
- ON imgs.ImageId = INSERTED.ImageId
- END
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement