X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=database%2Ffunctions%2Fforum_posts.sql;fp=database%2Ffunctions%2Fforum_posts.sql;h=1f31080b738026b1b3ea9d48e3a8cc8b7c7cb660;hb=76887e53c27118fe04ae8fe75dce610a398b5853;hp=0000000000000000000000000000000000000000;hpb=73119e806350719e2ce899bfbaa2ba19f0dc87d1;p=ndwebbie.git diff --git a/database/functions/forum_posts.sql b/database/functions/forum_posts.sql new file mode 100644 index 0000000..1f31080 --- /dev/null +++ b/database/functions/forum_posts.sql @@ -0,0 +1,19 @@ +CREATE OR REPLACE FUNCTION update_forum_thread_posts() RETURNS trigger + AS $$ +BEGIN + + IF TG_OP = 'INSERT' THEN + UPDATE forum_threads SET posts = posts + 1, mtime = GREATEST(NEW.time,mtime) + WHERE ftid = NEW.ftid; + ELSIF TG_OP = 'DELETE' THEN + UPDATE forum_threads SET posts = posts - 1 WHERE ftid = OLD.ftid; + ELSIF TG_OP = 'UPDATE' AND NEW.ftid <> OLD.ftid THEN + UPDATE forum_threads SET posts = posts - 1 WHERE ftid = OLD.ftid; + UPDATE forum_threads SET posts = posts + 1, mtime = GREATEST(NEW.time,mtime) + WHERE ftid = NEW.ftid; + END IF; + + return NEW; +END; +$$ + LANGUAGE plpgsql;