Re: Why doesn't this pgsql function compile?
От | Alex Pilosov |
---|---|
Тема | Re: Why doesn't this pgsql function compile? |
Дата | |
Msg-id | Pine.BSO.4.10.10106151826220.17529-100000@spider.pilosoft.com обсуждение исходный текст |
Ответ на | Why doesn't this pgsql function compile? (Larry Rosenman <ler@lerctr.org>) |
Список | pgsql-sql |
On Fri, 15 Jun 2001, Larry Rosenman wrote: <snip> you are missing an endif: > DROP TRIGGER netblock_bgp ON networks; > DROP FUNCTION networks_trigger_router(); > CREATE FUNCTION networks_trigger_router() > RETURNS opaque > AS 'BEGIN > IF TG_OP = ''DELETE'' AND OLD.router ISNULL > THEN return OLD; > END IF; > IF TG_OP = ''INSERT'' AND NEW.router ISNULL > THEN return NEW; > END IF; > IF TG_OP = ''INSERT'' AND get_router_nexthop(NEW.router) ISNULL > THEN return NEW; > END IF; > IF TG_OP = ''DELETE'' AND get_router_nexthop(OLD.router) ISNULL > THEN return OLD; > END IF; > IF TG_OP = ''INSERT'' > THEN add_ip_route(host(network(NEW.netblock)), > host(netmask(NEW.netblock)), > get_router_ethernet(NEW.router), > get_router_nexthop(NEW.router), > get_router_nexthop_user(NEW.router), > get_router_nexthop_password(NEW.router), > get_router_nexthop_enpass(NEW,router)); > return NEW; > END IF; > IF TG_OP = ''DELETE'' > THEN del_ip_route(host(network(OLD.netblock)), > host(netmask(OLD.netblock)), > get_router_ethernet(OLD.router), > get_router_nexthop(OLD.router), > get_router_nexthop_user(OLD.router), > get_router_nexthop_password(OLD.router), > get_router_nexthop_enpass(OLD,router)); > return OLD; ^^^^^^^^^^^^^^^^ END IF; > -- TG_OP must be UPDATE to get here.... > IF OLD.router NOTNULL and get_router_nexthop(OLD.router) NOTNULL > AND NEW.router NOTNULL and OLD.router != NEW.router > THEN del_ip_route(host(network(OLD.netblock)), > host(netmask(OLD.netblock)), > get_router_ethernet(OLD.router), > get_router_nexthop(OLD.router), > get_router_nexthop_user(OLD.router), > get_router_nexthop_password(OLD.router), > get_router_nexthop_enpass(OLD,router)); > END IF; > IF NEW.router NOTNULL and get_router_nexthop(NEW.router) NOTNULL > THEN add_ip_route(host(network(NEW.netblock)), > host(netmask(NEW.netblock)), > get_router_ethernet(NEW.router), > get_router_nexthop(NEW.router), > get_router_nexthop_user(NEW.router), > get_router_nexthop_password(NEW.router), > get_router_nexthop_enpass(NEW,router)); > END IF; > return NEW; > END;' > LANGUAGE 'plpgsql'; > CREATE TRIGGER netblock_bgp > BEFORE UPDATE OR INSERT OR DELETE > ON networks > FOR EACH ROW > EXECUTE PROCEDURE networks_trigger_router(); > >
В списке pgsql-sql по дате отправления: