Message posté par : Tomapinfo (numerobisco04(a)hotmail.fr)
----------------------------------------
Bonjour,
J'essaye de reproduire un trigger qui fonctionne bien dans PostgreSQL/Postgis dans
Oracle.
Le trigger remonte des informations lors de la saisie ou de la modification.
-----------------
Code :
CREATE OR REPLACE FUNCTION x.champs_auto()
RETURNS trigger AS
$BODY$BEGIN
NEW.num_insee = x.communes.num_insee FROM x.communes WHERE st_intersects(NEW.geom,
x.communes.geom);
RETURN NEW;
END$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
-----------------
Mais dans Oracle, l'ecriture n'est pas identique et au mieux j'ai réussi à
faire ça.
-----------------
Code :
CREATE OR REPLACE TRIGGER "DBO"."Cps_auto_I" BEFORE INSERT --
ON Y --
FOR EACH ROW --
declare INSEE VARCHAR2(20) DEFAULT '';
Begin --
Select b.NUM_INSEE into INSEE from ua b WHERE
SDO_RELATE(:NEW.GEOMETRIE,b.GEOMETRIE,'mask=INSIDE') = 'TRUE' and
b.SOUS_TYPE = 'COMMUNES';
:NEW.NUM_INSEE := INSEE ;
;
End;
-----------------
Mais j'obtiens cette erreur alors que j'ai bien un index sur les 2 tables.
-----------------
Citation :
Erreur SQL : ORA-13226: interface non prise en charge sans index spatial
-----------------
Je penses donc que l'objet n'est pas encore enregistré et donc pas dans
l'Index.
Car le select seul fonctionne bien.
Au vue de ce message je me demande s'il y est vraiment possible de faire se genre de
requête dans un trigger ?
Si cela est possible avez-vous une idée pour le corriger ?
Merci par avance.
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=335958#p335958
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net