· 6 years ago · May 26, 2019, 02:40 AM
1CREATE TABLE IF NOT EXISTS votes (
2 voice SMALLINT,
3 UNIQUE (thread_id, "user"),
4 thread_id BIGINT,
5 "user" CITEXT
6);
7
8CREATE OR REPLACE FUNCTION vote_add() RETURNS TRIGGER AS $emp_audit$
9 BEGIN
10 UPDATE threads
11 SET votes = votes + NEW.voice
12 WHERE id = NEW.thread_id;
13 RETURN NULL;
14 END;
15$emp_audit$ LANGUAGE plpgsql;
16
17CREATE OR REPLACE FUNCTION vote_update() RETURNS TRIGGER AS $emp_audit$
18 BEGIN
19 UPDATE threads
20 SET votes = votes - OLD.voice + NEW.voice
21 WHERE id = OLD.thread_id;
22 RETURN NULL;
23 END;
24$emp_audit$ LANGUAGE plpgsql;
25
26-- Votes
27DROP TRIGGER IF EXISTS vote_insert ON votes;
28
29CREATE TRIGGER vote_insert
30 AFTER INSERT
31 ON votes
32 FOR EACH ROW EXECUTE PROCEDURE vote_add();
33
34DROP TRIGGER IF EXISTS vote_update ON votes;
35
36CREATE TRIGGER vote_update
37 AFTER UPDATE
38 ON votes
39 FOR EACH ROW EXECUTE PROCEDURE vote_update();