Created
June 28, 2011 07:33
-
-
Save hizel/1050674 to your computer and use it in GitHub Desktop.
fix delete trigger
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- | |
-- Name: msgdel(); Type: FUNCTION; Schema: public; Owner: maxcom | |
-- | |
CREATE OR REPLACE FUNCTION msgdel() RETURNS trigger | |
LANGUAGE plpgsql | |
AS $$ | |
DECLARE | |
grid int; | |
stat_1 int; | |
stat int; | |
thetopic topics%ROWTYPE; | |
thecomment comments%ROWTYPE; | |
BEGIN | |
SELECT * INTO thetopic FROM topics WHERE id = NEW.msgid; | |
IF FOUND THEN | |
SELECT groupid INTO grid FROM topics WHERE id = NEW.msgid; | |
UPDATE groups SET stat1=stat1-1 WHERE id = grid; | |
UPDATE topics SET lastmod=CURRENT_TIMESTAMP WHERE id = NEW.msgid; | |
UPDATE comments SET topic_deleted=true WHERE topic = NEW.msgid; | |
ELSE | |
SELECT * INTO thecomment FROM comments WHERE id = NEW.msgid; | |
SELECT topic INTO grid FROM comments WHERE id = NEW.msgid; | |
UPDATE topics SET stat1=stat1-1, lastmod=CURRENT_TIMESTAMP WHERE id = grid; | |
UPDATE topics SET stat2=stat1 WHERE id=grid AND stat2 > stat1; | |
UPDATE topics SET stat3=stat1 WHERE id=grid AND stat3 > stat1; | |
UPDATE topics SET stat4=stat1 WHERE id=grid AND stat4 > stat1; | |
SELECT groupid INTO grid FROM topics WHERE id = grid; | |
UPDATE groups SET stat1=stat1-1 WHERE id = grid; | |
END IF; | |
RETURN NULL; | |
END; | |
$$; |
и да, в постгрессе есть CREATE OR REPLACE FUNCTION (это чтобы не делать DROP/CREATE)
(блин, на lor канал лег)
fixed
а можешь еще обновить sql/demo.db? А то у меня тут под рукой только PostgreSQL 9, а 8.4 нету.
Делается это так:
создаешь чистую базу, заливаешь в нее demo.db, потом обновляешь функцию, затем дампишь pg_dump обратно в demo.db и коммитишь его
сейчас сделаю
сделал, только что-то много изменений получилось :-|
да, чего-то оно пересортировалось. Ну и ладно, сейчас заберу. В следующий раз наверное надо использовать "git add -p"
выложил, базу на linux.org.ru обновил
спасибо
пожалуйста :-)
хм, опять по\валился хостер :-(
угу
…On Tue, Jun 28, 2011 at 3:06 PM, hizel ***@***.*** wrote:
пожалуйста :-)
хм, опять по\валился хостер :-(
##
Reply to this email directly or view it on GitHub:
https://gist.github.com/1050674
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
не, так плохо - будут отрицательные счетчики :-)
stat1 это общее число сообщений, stat2..stat4 - счетчики сообщений за последний месяц/день/час