hi hab ne triggerfunction geschrieben, aber die funzt nicht. Vielleicht sieht ja jemand von euch woran es liegt:
Fehlermeldung beim ausführen:
ERROR: syntax error at or near "IF"
LINE 1: SELECT ( $1 != 8) IF(SELECT COUNT(*) FROM resultsview WHER...
^
QUERY: SELECT ( $1 != 8) IF(SELECT COUNT(*) FROM resultsview WHERE testperiodid = $2 AND talentid= $3 AND testid in ('2','3','4','5','7') = 5)
CONTEXT: SQL statement in PL/PgSQL function "calculateoverallscore" near line 7
********** Fehler **********
ERROR: syntax error at or near "IF"
SQL Status:42601
bitte um hilfe
Code:
CREATE OR REPLACE FUNCTION calculateoverallscore() RETURNS TRIGGER AS $testswherechanged$
DECLARE
totalscore numeric;
BEGIN
IF (OLD.testid != 8)
IF(SELECT COUNT(*) FROM resultsview WHERE testperiodid = OLD.testperiodid AND talentid=OLD.talentid AND testid in ('2','3','4','5','7') = 5) THEN
FOR values IN (SELECT testid, value FROM results WHERE testperiodid = OLD.testperiodid AND talentid = OLD.talentid ORDER BY testid ASC) LOOP
IF(values.testid = 2) THEN
totalscore := values.value * 17.29
END IF;
IF(values.testid = 3) THEN
totalscore := totalscore + values.value * 9.43
END IF;
IF(values.testid = 4) THEN
totalscore := totalscore + values.value * 4.11
END IF;
IF(values.testid = 5) THEN
totalscore := totalscore + values.value * 2.41
END IF;
IF(values.testid = 7) THEN
totalscore := totalscore + values.value,
END IF;
END LOOP;
totalscore := 1/totalscore*10000
INSERT INTO results (value,testid,testperiodid,talentid,changed,created) VALUES(totalscore,8,OLD.testperiodid,OLD.talentid,current_timestamp,current_timestamp);
END IF;
END IF;
END;
$testswherechanged$ LANGUAGE plpgsql;
CREATE TRIGGER testswherechanged AFTER INSERT ON results FOR EACH ROW EXECUTE PROCEDURE calculateoverallscore();
Fehlermeldung beim ausführen:
ERROR: syntax error at or near "IF"
LINE 1: SELECT ( $1 != 8) IF(SELECT COUNT(*) FROM resultsview WHER...
^
QUERY: SELECT ( $1 != 8) IF(SELECT COUNT(*) FROM resultsview WHERE testperiodid = $2 AND talentid= $3 AND testid in ('2','3','4','5','7') = 5)
CONTEXT: SQL statement in PL/PgSQL function "calculateoverallscore" near line 7
********** Fehler **********
ERROR: syntax error at or near "IF"
SQL Status:42601
bitte um hilfe