Update Date Column with Trigger When Geometry Updated
Hi,
I have a column named "GEO_MOD_DATE" that is supposed to be updated whenever my geometry column is updated. My trigger code is below. Currently the trigger is firing when columns other than my geometry column are updated. I've searched the forum and many other sites. As best as I can tell, my trigger is written correctly. But I can't figure out why it's firing when columns other than my geometry column are being updated. Do you have any thoughts? Thanks in advance! Note that the trigger does fire when I update the geometry column. However it's also firing when other columns are updated. I've also tried adding the "OF GDO_GEOMETRY" clause to after "BEFORE UPDATE" and that didn't help.
Jeff
Trigger:
CREATE OR REPLACE TRIGGER OPER_ZONE_VALVE_GEO_BU_T
BEFORE UPDATE
ON OPER_ZONE_VALVE
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
v_foo NUMBER (9);
BEGIN
-- comment out starting below if you do not want to assign GEO_MOD_DATE
BEGIN
IF UPDATING ('GDO_GEOMETRY') and :NEW.gdo_geometry IS NOT NULL
THEN
:NEW.geo_mod_date := SYSDATE;
ELSE
:NEW.geo_mod_date := NULL;
END IF;
EXCEPTION
WHEN OTHERS
THEN
raise_application_error
(-20013,
'Unable to autoassign OPER ZONE VALVE field.'
);
END;
/*****/
NULL;
EXCEPTION
WHEN OTHERS
THEN
raise_application_error
(-20013,
'error in execution of BEFORE INSERT TRIGGER OPER_ZONE_VALVE_GEO_BU_T;'
);
END;
/
--------------------------------------------
And here is my table structure:
CREATE TABLE OPER_ZONE_VALVE
(
MSLINK NUMBER(38),
VALVE_NUMBER VARCHAR2(8 BYTE),
ECM_NUMBER VARCHAR2(8 BYTE),
VALVE_SIZE VARCHAR2(4 BYTE),
CONNECTION_TYPE VARCHAR2(100 BYTE),
HEADER_STREET VARCHAR2(100 BYTE),
HEADER_FEET VARCHAR2(8 BYTE),
HEADER_DIR VARCHAR2(4 BYTE),
HEADER_PROP VARCHAR2(4 BYTE),
SUB_STREET VARCHAR2(100 BYTE),
SUB_FEET VARCHAR2(8 BYTE),
SUB_DIR VARCHAR2(4 BYTE),
SUB_PROP VARCHAR2(4 BYTE),
PLAT_MAP_NUMBER VARCHAR2(4 BYTE),
CREATED_BY VARCHAR2(50 BYTE) DEFAULT USER,
CREATED_DATE DATE DEFAULT SYSDATE,
MODIFIED_BY VARCHAR2(50 BYTE),
MODIFIED_DATE DATE,
GEO_MOD_DATE DATE,
REMARK VARCHAR2(40 BYTE),
GDO_GEOMETRY MDSYS.SDO_GEOMETRY
)