function.sql
application/x-unknown-content-type-sql_auto_file
Filename: function.sql
Type: application/x-unknown-content-type-sql_auto_file
Part: 0
Message:
Re: [SQL] MAX() of 0 records.
CREATE FUNCTION setentryprices () RETURNS OPAQUE AS ' DECLARE temp INT4; BEGIN IF TG_OP=''INSERT'' THEN temp:=count(*) FROM item where item_entry_id=NEW.item_entry_id AND item_live=''t''; IF (temp>0) THEN UPDATE entry_stats SET entry_maxprice=MAX(item_price), entry_minprice=min(item_price), entry_itemcount=count(item_price) FROM item WHERE entry_stats.entry_id=item_entry_id AND item_entry_id=NEW.item_entry_id AND item_live=''t''; ELSE UPDATE entry_stats SET entry_maxprice=0, entry_minprice=0, entry_itemcount=0 WHERE entry_stats.entry_id=NEW.item_entry_id; END IF; END IF; IF TG_OP=''DELETE'' THEN temp:=count(*) FROM item where item_entry_id=OLD.item_entry_id AND item_live=''t''; IF (temp>0) THEN UPDATE entry_stats SET entry_maxprice=MAX(item_price), entry_minprice=min(item_price), entry_itemcount=count(item_price) FROM item WHERE entry_stats.entry_id=item_entry_id AND item_entry_id=OLD.item_entry_id AND item_live=''t''; ELSE SET entry_maxprice=0, entry_minprice=0, entry_itemcount=0 WHERE entry_stats.entry_id=OLD.item_entry_id; END IF; END IF; IF TG_OP=''UPDATE'' THEN temp:=count(*) FROM item where item_entry_id=NEW.item_entry_id AND item_live=''t''; IF (temp>0) THEN UPDATE entry_stats SET entry_maxprice=MAX(item_price), entry_minprice=min(item_price), entry_itemcount=count(item_price) FROM item where entry_stats.entry_id=item_entry_id AND item_entry_id=NEW.item_entry_id AND item_live=''t''; ELSE UPDATE entry_stats SET entry_maxprice=0, entry_minprice=0, entry_itemcount=0 WHERE entry_stats.entry_id=NEW.item_entry_id; END IF; IF NEW.item_entry_id != OLD.item_entry_id THEN temp:=count(*) FROM item where item_entry_id=OLD.item_entry_id AND item_live=''t''; IF (temp>0) THEN UPDATE entry_stats SET entry_maxprice=MAX(item_price), entry_minprice=min(item_price), entry_itemcount=count(item_price) FROM item WHERE entry_stats.entry_id=item_entry_id AND item_entry_id=OLD.item_entry_id AND item_live=''t''; ELSE SET entry_maxprice=0, entry_minprice=0, entry_itemcount=0 WHERE entry_stats.entry_id=OLD.item_entry_id; END IF; END IF; END IF; RETURN NULL; END; ' LANGUAGE 'plpgsql'; CREATE TRIGGER updateentryprices AFTER INSERT OR DELETE OR UPDATE ON item FOR EACH ROW EXECUTE PROCEDURE setentryprices();