1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
create or replace trigger FAIT_GEOMETRY_TRG before insert or update
on FAIT
referencing new as new old as old
for each row
declare
/***************************************
alimentation du champ geometrie en automatique
***************************************/
begin
if :new.X is not null and :new.Y is not null
then
if inserting then :NEW.GEOMETRIE:=MDSYS.SDO_GEOMETRY(2001,141012,MDSYS.SDO_POINT_TYPE(:NEW.X, :NEW.Y, null), null, null); end if;
if updating ('X') then :NEW.GEOMETRIE:=MDSYS.SDO_GEOMETRY(2001,141012,MDSYS.SDO_POINT_TYPE(:NEW.X, :NEW.Y, null), null, null); end if;
end if;
if :new.geometrie is not null
then
if inserting then select (select quartier.id_quartier from quartier,fait where sdo_relate(:new.geometrie,quartier.geometrie,'mask=inside') = 'TRUE' and id_fait=:new.id_fait) into :new.id_quartier from fait; end if;
if updating ('X') then select (select quartier.id_quartier from quartier,fait where sdo_relate(:new.geometrie,quartier.geometrie,'mask=inside') = 'TRUE'and id_fait=:new.id_fait) into :new.id_quartier from fait; end if;
end if;
end; |
Partager