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 Firebird Discussion :

[trigger] joindre des periodes qui coincident dans une table


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut [trigger] joindre des periodes qui coincident dans une table
    Je m'explique ! J'ai une table qui possede des periodes pour des salles. Je voudrais creer un trigger qui joind les periodes qui se 'touchent' :sweat: automatiquement, apres insertion d'un nouvel enregistrement.

    par exemple il y a l'enregistrement :
    salle debut fin
    1 13/02/06 16/02/06
    2 10/02/06 11/02/06

    on rentre :
    salle : 1 , debut : 16/02/06, fin : 18/02/06

    et au lieu que ça donne :
    salle debut fin
    1 13/02/06 16/02/06
    2 10/02/06 11/02/06
    1 16/02/06 18/02/06

    ça donne :
    salle debut fin
    1 13/02/06 18/02/06
    2 10/02/06 11/02/06

    est ce possible ?

    J'ai trouvé la premiere partie qui modifie la date :
    begin
    UPDATE PERIODE
    SET date_fin = new.date_fin
    WHERE date_fin = new.date_debut
    AND id = new.id;
    end
    Le probleme c'est que ça ne supprime pas le dernier nuplet inséré qui n'a plus de raison d'etre du coup.
    J'avais tenté un :
    DELETE FROM PERIODE
    WHERE id_resa = new.id_resa;
    juste apres le premier trigger, mais ça m'effacait tous les enregitrement que je faisais evidement.
    Comment faire pour n'executer cette commande que s'il y a eu un update ?

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Points : 120
    Points
    120
    Par défaut
    Pourquoi faire un DELETE ?
    Quelque chose comme ça devrait approcher de la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    SELECT COUNT(*) AS NBRE
    FROM MATABLE
    WHERE DATE_FIN = :Date_Debut
    AND     SALLE = :Salle
     
    Si NBRE =1 Alors
     
       UPDATE MATABLE
           SET DATE_FIN  = :Date_fin
       WHERE DATE_FIN = :Date_Debut
       AND     SALLE = :Salle
    Sinon
       INSERT INTO MATABLE
        (SALLE, DATE_DEBUT, DATE_FIN)
       VALUES
        (:Salle, :Date_Debut, :Date_Fin)

  3. #3
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Pourquoi ne pas utiliser une procédure stockée pour faire ton insertion ? Tu pourrais faire tous les contrôles nécessaires dans la procédure, et faire soit un insert, soit un update en fonction du cas rencontré.
    Je crois aussi que tu devrais prévoir une clé unique (avec générateur)
    pour ta table, ça te facilitera le code dans la PS.

    @+

Discussions similaires

  1. Ce qui est dans une table mais pas dans l'autre !
    Par youyoule dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/12/2007, 12h57
  2. [SQL] fonction en php qui count() dans une table sql
    Par Draner dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 25/09/2007, 09h12
  3. [VBA-E]Transfere des données d'Excel dans une table Access
    Par flo83 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/04/2006, 09h22
  4. Récupérer des noms de fichiers dans une table ?
    Par florus dans le forum Access
    Réponses: 5
    Dernier message: 25/03/2006, 17h34
  5. [Débutant]Comment faire des tranches de nombre dans une tabl
    Par Jedecouvreaccess dans le forum Access
    Réponses: 7
    Dernier message: 05/09/2005, 08h46

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