Why doesn't this pgsql function compile?
От | Larry Rosenman |
---|---|
Тема | Why doesn't this pgsql function compile? |
Дата | |
Msg-id | 20010615170950.A3303@lerami.lerctr.org обсуждение исходный текст |
Ответы |
Re: Why doesn't this pgsql function compile?
|
Список | pgsql-sql |
When this PLpgsql function gets called on the trigger it fails compilation on the last line. What am I doing wrong? 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.routerISNULL THEN return NEW; END IF; IF TG_OP = ''INSERT'' AND get_router_nexthop(NEW.router) ISNULL THEN returnNEW; END IF; IF TG_OP = ''DELETE'' AND get_router_nexthop(OLD.router) ISNULL THEN return OLD; END IF; IFTG_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; -- TG_OP must be UPDATE to get here.... IF OLD.router NOTNULLand 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(); -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: ler@lerctr.org US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749
В списке pgsql-sql по дате отправления: