DBA Data[Home] [Help]

TRIGGER: MDSYS.SDO_GEOR_TRIG_UPD1

Source

Description
SDO_GEOR_TRIG_UPD1
INSTEAD OF UPDATE ON user_sdo_geor_sysdata
FOR EACH ROW
Type
INSTEAD OF
Event
UPDATE
Column
When
Referencing
REFERENCING NEW AS NEW OLD AS OLD
Body
DECLARE
 owner VARCHAR2(32);
 valid   VARCHAR2(32);
BEGIN
  owner:=user;
  valid:=SDO_GEOR_DEF.isValidEntry(nls_upper(owner),nls_upper(:old.table_name),nls_upper(:old.column_name),nls_upper(:old.rdt_table_name),:old.raster_id);
  if(valid='TRUE')
  then
     mderr.raise_md_error('MD', 'SDO', -13391, 'A valid entry cannot be updated directly.');
  end if;
  valid:=SDO_GEOR_DEF.isValidEntry(nls_upper(owner),nls_upper(:new.table_name),nls_upper(:new.column_name),nls_upper(:new.rdt_table_name),:new.raster_id);
  if(valid='FALSE')
  then
     mderr.raise_md_error('MD', 'SDO', -13391, 'The updated entry is not valid.');
  end if;


  SDO_GEOR_DEF.deleteMetaEntry(user, :old.rdt_table_name, :old.raster_id);


  SDO_GEOR_INT.insertUserSysEntry(user, :new.table_name, :new.column_name,
      :new.metadata_column_name, :new.rdt_table_name, :new.raster_id,
      :new.other_table_names);
END;