Difference between revisions of "Public.setsnmpinterfacekeysoninsert (trigger function)"
| Line 57: | Line 57: | ||
$function$ | $function$ | ||
</pre> | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Latest revision as of 10:20, 27 August 2011
wikibot[edit]
| Trigger Function | public.setsnmpinterfacekeysoninsert |
Source[edit]
CREATE OR REPLACE FUNCTION public.setsnmpinterfacekeysoninsert()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
BEGIN
--
-- (Used for Trigger insert with old style foreign key)
-- This condition keeps the snmpInterfaceId inSync with the composite foreign key of nodeid, ipaddr, ifindex
-- This usually happens when a new record is written by our JDBC code (non-Hibernate DAO) for the old JDBC style
-- code has no knowledge of the new keys
--
IF NEW.snmpInterfaceId IS NULL
THEN
IF NEW.ifIndex IS NOT NULL
THEN
SELECT snmpif.id INTO NEW.snmpInterfaceId
FROM snmpinterface snmpif
WHERE (snmpif.nodeid = NEW.nodeid AND snmpif.snmpIfIndex = NEW.ifIndex);
IF NOT FOUND
THEN
RAISE EXCEPTION 'IpInterface Trigger Notice, Condition 1: No SnmpInterface found for... nodeid: % ifindex: %', NEW.nodeid, NEW.ifIndex;
END IF;
END IF;
--
-- (Used for Insert with new style foreign key)
-- This condition keeps the composite foreign key of nodeid, ipaddr, ifindex inSync with the SnmpInterfaceId
-- This usually happens when a new record is written by our Hibernate DAOs... these DAOs have no knowledge of
-- the composite key columns
--
ELSIF NEW.snmpInterfaceId IS NOT NULL AND (NEW.nodeId IS NULL OR NEW.ifIndex IS NULL)
THEN
SELECT snmpif.nodeid, snmpif.snmpIfIndex INTO NEW.nodeid, NEW.ifIndex
FROM snmpinterface snmpif
WHERE (snmpif.id = NEW.snmpInterfaceId);
IF NOT FOUND
THEN
RAISE EXCEPTION 'IpInterface Trigger Notice: No SnmpInterface found for snmpInterfaceId: %', NEW.snmpInterfaceId;
END IF;
END IF;
RETURN NEW;
END;
$function$