mam pewien problem z prościutkim triggerem pod PostgreSQL 8.3:
CREATE OR REPLACE FUNCTION categories_products_amount() RETURNS TRIGGER AS ' BEGIN IF (TG_OP = "INSERT" OR TG_OP = "UPDATE") THEN UPDATE categories SET products=(SELECT COUNT(*) FROM products WHERE category_id=NEW.category_id) WHERE id=NEW.category_id; END IF; IF (TG_OP = "DELETE" OR TG_OP = "UPDATE") THEN UPDATE categories SET products=(SELECT COUNT(*) FROM products WHERE category_id=OLD.category_id) WHERE id=OLD.category_id; END IF; RETURN NULL; END; ' LANGUAGE 'plpgsql'; CREATE TRIGGER categories_products_amount AFTER INSERT OR UPDATE OR DELETE ON products FOR EACH ROW EXECUTE PROCEDURE categories_products_amount();
Całość tworzy się ładnie, bez żadnego błędu. Problem natomiast powstaje w przypadku wykonywania modyfikacji (I, U, D) na tabeli products. Wówczas otrzymotrzymuję błąd:
Kod
Column "INSERT" does not exits.
IF ($1 = "INSERT" OR $1 = "UPDATE")
IF ($1 = "INSERT" OR $1 = "UPDATE")
W czym problem?
Próbując zmienić "INSERT" itp. na 'INSERT' (jak to jest pokazane w manualu) funkcja w ogóle się nie tworzy - od razu rzuca błędami (oczywiście zmieniam również ' poza ciałem funkcji).
Prosiłbym o pomoc,
pion