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

SQL Oracle Discussion :

[Trigger]Je ne peux plus mettre à jour mes données


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut [Trigger]Je ne peux plus mettre à jour mes données
    J'ai un trigger qui empeche la mise à jour si un traitement est en cours : dans une table, j'ai 2 champs dates : début et fin de process. Au début du process, on renseigne la date de début et tant que la date de fin n'est pas renseignée par l'appli, on empeche l'update. Sauf que mon trigger empeche de pouvoir enlever la date de début de process ou de mettre à jour la date de fin ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE OR REPLACE TRIGGER xml_updt_lst_ecg_xml_request
    BEFORE UPDATE
    ON LST_ECG_XML_REQUEST
    REFERENCING OLD AS OLD
    FOR EACH ROW
    BEGIN
     IF(:OLD.DATE_STARTPROCESS IS NOT NULL AND :OLD.DATE_ENDPROCESS IS NULL) THEN
           -- on empeche l'update de se faire
           RAISE_APPLICATION_ERROR ( -20010, 'Etude en cours de traitement.' );   
     END IF; 
    END;
    Une idée ??
    Merci

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE OR REPLACE TRIGGER xml_updt_lst_ecg_xml_request
    BEFORE UPDATE
    ON LST_ECG_XML_REQUEST
    REFERENCING OLD AS OLD
    FOR EACH ROW
    BEGIN
     IF(:NEW.DATE_STARTPROCESS IS NOT NULL AND :NEW.DATE_ENDPROCESS IS NULL) THEN
           -- on empeche l'update de se faire
           RAISE_APPLICATION_ERROR ( -20010, 'Etude en cours de traitement.' );   
     END IF; 
    END IF;
    END;
    c'est NEW et pas OLD qu'il faut tester

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut
    Je ne savais pas qu'on pourvait faire référence à OLD et tester sur NEW.

    Je vais voir ça

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    tu dois référencer NEW aussi éventuellement

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut
    Merci !!

    Ca marche comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE OR REPLACE TRIGGER xml_updt_lst_ecg_xml_request
    BEFORE UPDATE 
    ON LST_ECG_XML_REQUEST
    REFERENCING OLD AS OLD NEW as NEW
    FOR EACH ROW
    BEGIN
       IF((:OLD.DATE_STARTPROCESS IS NOT NULL AND :OLD.DATE_ENDPROCESS IS NULL) AND :NEW.DATE_ENDPROCESS is null) THEN
           -- on empeche l'update de se faire
           RAISE_APPLICATION_ERROR ( -20010, 'Etude en cours de traitement.' );
       END IF;
    END;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impossible de mettre à jour mes infos avec la requête UPDATE
    Par pierre73460 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/01/2015, 17h28
  2. Programme pour mettre à jour mes programmes
    Par mr_samurai dans le forum Windows
    Réponses: 4
    Dernier message: 01/05/2009, 02h27
  3. Mettre à jour Mes Champs (text)
    Par wayle dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 08/07/2007, 17h36
  4. Impossible de mettre à jour mes données
    Par Cazaux-Moutou-Philippe dans le forum WinDev
    Réponses: 2
    Dernier message: 25/11/2006, 14h59
  5. Mettre à jour les données avec un ADODC
    Par ecarbill dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/08/2006, 20h41

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