IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Créer un trigger de type "After"


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Par défaut Créer un trigger de type "After"
    Bonjour,

    Voici la procédure actuelle que j'utilise pour créer un trigger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE OR REPLACE TRIGGER Schema.Table_PERIM_TG
    BEFORE INSERT OR UPDATE
    ON Schema.table
    REFERENCING NEW AS New OLD AS Old
    FOR EACH ROW
    DECLARE
      dim_info mdsys.sdo_dim_array;
      requete varchar2(200);
    BEGIN
    requete := 'select m.diminfo FROM mdsys.user_sdo_geom_metadata m WHERE m.TABLE_NAME=''Table'' AND m.COLUMN_NAME=''SHAPE''';
    execute immediate requete into dim_info;
    :NEW.FLT_PERIMETRE := SDO_GEOM.SDO_LENGTH(:NEW.SHAPE,dim_info);
    END;
    /
    Or je voudrai changer le type de ce trigger en "After" et non plus en "before"
    J'utilise l'assistant de Toad pour créer le nouveau trigger mais j'obtiens le message d'erreur suivant :
    ORA-04084:
    cannot change NEW values for this trigger type
    La documentation Oracle me retourne ceci comme informations concernant cette erreur :
    Cause: New trigger variables can only be changed in before row insert or update triggers.
    Action: Change the trigger type or remove the variable reference.
    Or je veux rester en "After" mais j'ai besoin de mettre a jour le champ FLT_PERIMETRE de ma table. Mais je ne sais pas comment corriger cela.

    Quelqu'un pourrait-il m'aider?

    Merci beaucoup d'avance

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Or je veux rester en "After" mais j'ai besoin de mettre a jour le champ FLT_PERIMETRE de ma table.
    Tu ne peux pas.
    Donc soit tu passes en Before, soit tu mets à jour autrement (comme on fait pour les mutating table).

    Mais je ne vois pas pourquoi tu veux absolument rester en After ?

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo