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

Développement SQL Server Discussion :

Question / Aide Trigger


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Par défaut Question / Aide Trigger
    Bonjour à tous !

    Voila, je me lance dans le developpement côté base de données depuis peu de temps.
    (Ya deux jour en faite :s)

    J'ai une petite application de réservation de salle de réunion Access (Pas glorieu:/),
    cependant je souhaite la passer sous SQL Serveur avec une interface Web.

    Pour éviter de faire les contrôles au niveau de l'application je pensais les faire côté base de données à l'aide des trigger et procédure stockées.

    Voila mon premier triggers :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    CREATE TRIGGER TRIGG_PLAGE
    ON OCCUPER
    FOR INSERT
    AS
    BEGIN
     
        DECLARE @MOT AS CHAR(250);
     
        SELECT @MOT=Occuper.Motif
        FROM OCCUPER,INSERTED
        WHERE
                     INSERTED.ID_Reservation<>Occuper.ID_Reservation
            AND INSERTED.IdentifiantSalle = Occuper.IdentifiantSalle
            AND DATEDIFF(day,Occuper.DateRes,Inserted.DateRes) = 0
            AND
               (
                (
                        Inserted.HDeb>=Occuper.HDeb
                    AND    Inserted.HDeb<Occuper.HFin
                 )
                OR
                (
                        Inserted.HFin>Occuper.HDeb
                    AND    Inserted.HFin<=Occuper.HFin
     
                 )
                OR
                (
                        Inserted.HDeb<=Occuper.HDeb
                    AND    Inserted.HFin>=Occuper.HFin
     
                 )   
               )
     
     
        IF LEN(@MOT)>0 
        BEGIN
            SET @MOT='Il y à déjà une réservation ce jour la'
            RAISERROR 34000 @MOT
            ROLLBACK TRANSACTION
        END
    END
    Il contrôle si la réservation en cour chevauche ou non une réservation déjà enregistrée.

    Je me suis rendu compte de deux choses :

    1) Si les paramètres que je me sert dans ma requete ne sont pas renseigner, le trigger ne sert plus à rien.
    Comment peut-on Vérifier si tous les champ de la requete d'insertion sont renseignés au niveau de la base de données(Si c'est possible et conseiller)?

    2) Pourquoi je dois exclure l'enregistrement que j'insère ? Si je l'exclus pas, impossible de faire un enregistrement.


    Merci de vos réponse future (Si il y en a )

  2. #2
    Membre expérimenté
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Par défaut
    Bonjour,

    1) Pour rendre obligatoire la valorisation de certaines colonnes il est nécessaire de définir une contrainte d'intégritgé NOT NULL sur la colonne.
    2) J'avoue ne pas ben comprendre votre remarque sur l'exclusion, est il possible d'avoir plus d'informations?

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Concernant le chevauchement de périodes, vous pouvez regarder par ici.

    Ensuite votre trigger est faux parce qu'il n'est pas ensembliste.
    Vous pouvez voir ici

    Enfin n'écrivez pas vos jointures dans la clause WHERE, mais en utilisant l'opérateur JOIN

    @++

Discussions similaires

  1. Wicket questions / aide
    Par Franchez dans le forum Wicket
    Réponses: 3
    Dernier message: 09/10/2009, 09h10
  2. Aide Trigger simple
    Par Cyrille36 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 14/10/2008, 21h59
  3. Question sur TRIGGER (Voire Procédure)
    Par LinuxUser dans le forum PL/SQL
    Réponses: 13
    Dernier message: 09/01/2008, 14h11
  4. questions, curseur trigger and co
    Par trogloman dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 24/09/2007, 14h49
  5. Question de trigger
    Par flaplante dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 18/08/2006, 21h22

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