Le problème est que nous utilisons une application appelée ArcGIS qui crée une couche de gestion supérieure pour notre base de données, et lorsque nos utilisateurs utilisent ArcGIS pour créer un nouvel objet dans la base de données, elle ajoute une valeur par défaut (0) à la clé primaire, donc lorsque le deuxième objet est créé, il déclenche une erreur ORA pour avoir des valeurs en double. Donc, mon idée était de créer un déclencheur d'incrémentation automatique pour notre PK, mais j'utilise AFTER INSERT à la place. Je ne pouvais pas trouver un exemple en ligne pour ce cas précis et un simple passage BEFORE donne après une erreur en disant que vous ne pouvez pas utiliser NOUVEAU avec APRÈSAprès le déclenchement automatique de l'incrément d'insertion
code SQL de ce que j'ai essayé (pris d'autres questions):
CREATE OR REPLACE TRIGGER "IMOVEL_TRIGGER"
after insert on IMOVEL
for each row
begin
select IMOVEL_SEQ.nextval into :NEW.GEOCODIGO_IMOVEL from dual;
end;
il ne peut pas être un élément déclencheur BEFORE INSERT, car l'application écrase
Simplifier, ce que je besoin est un déclencheur AFTER INSERT, qui met à jour le PK à la séquence .nextval, il n'a pas laissez-moi utiliser: VIEUX ou: NOUVEAU, donc je ne suis pas sûr de ce qui doit être fait. Ou un déclencheur de mise à jour qui fonctionne uniquement après sa création
C'est assez nouveau pour moi, avoir à apprendre SQL maintenant juste pour résoudre ce problème
Un déclencheur avant ne fonctionnera pas, l'application que nous utilisons écrase – Mojimi
Sonne comme un problème de soutien pour ArcGIS. Je ne connais pas ArcGIS donc je ne peux pas aider avec ça, désolé. –
Ouais, ils ne le considèrent pas comme un bug puisque nous ne sommes pas supposés faire quoi que ce soit en oracle, je me demandais juste s'il y avait un moyen de le contourner – Mojimi