Discussion: Syntaxe TRIGGER . [MySQL-5.6]

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2017
    Messages : 4
    Points : 5
    Points
    5

    Par défaut Syntaxe TRIGGER .

    Bonjour, je souhaite crée un trigger qui empechera le client de réserver 2 fois dans le même jour. Pour cela je vérifie si l'id du client est déja repertorié dans la table reservation. J'ai dû mal avec la syntaxe je m'en remets à vous
    Voici le trigger :
    Images attachées Images attachées  

  2. #2
    Membre actif Avatar de isabelle.letrong
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    juillet 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2010
    Messages : 58
    Points : 218
    Points
    218

    Par défaut

    Bonjour Lawlo06,

    phpMyAdmin, soupirs...

    Ceci étant :
    • Begin doit être AVANT la clause DECLARE
    • Sur le test je propose plutôt ceci (plus rigoureux et moins dispendieux) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      select idvisiteur
      from reservation 
      where idvisiteur = NEW.idvisiteur
       and DateReservation=curdate()
      into req;
       
      if (req IS NOT NULL)
      then....
    • Enfin, mieux vaut utiliser une 'user exception' ('45000') comme valeur de sqlstate.


    Bien cordialement

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2017
    Messages : 4
    Points : 5
    Points
    5

    Par défaut

    Merci à vous ça fonctionne !

  4. #4
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    17 893
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 17 893
    Points : 41 794
    Points
    41 794
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par Lawlo06 Voir le message
    Bonjour, je souhaite crée un trigger qui empechera le client de réserver 2 fois dans le même jour. Pour cela je vérifie si l'id du client est déja repertorié dans la table reservation. J'ai dû mal avec la syntaxe je m'en remets à vous
    Voici le trigger :
    Votre déclencheur n'a aucune chance de fonctionner correctement. En effet, deux sessions concurrentes qui lanceraient ce même code au même moment en concluraient la même chose et vous vous retrouveriez avec deux réservations le même jour.

    Il n'ay a aucun autre moyen d'assurer une unicité que de poser une contrainte d'unicité. C'est mille fois plus simple et mille fois plus performant !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  5. #5
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    3 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 3 637
    Points : 8 204
    Points
    8 204
    Billets dans le blog
    1

    Par défaut

    Et aussi, le besoin fonctionnel est il bien cerné ?
    Le plus souvent, permettre à un client de réserver deux fois le même jour est une chose normale (ex : le client réserve une chambre pour lui même, puis une autre pour un tiers le même jour)
    Par contre permettre à plusieurs clients de réserver la même ressource à la même date ne l'est pas (par exemple deux fois la même chambre d'hôtel le même jour)
    De quel type de réservation s'agit il ?

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

Discussions similaires

  1. Syntaxe Trigger before update
    Par dcabe dans le forum PL/SQL
    Réponses: 8
    Dernier message: 21/07/2008, 09h53
  2. Syntaxe Trigger Mysql / Transact SQL de SQL Server
    Par Flashball dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 13/03/2008, 15h23
  3. Problème de syntaxe trigger
    Par Nimothenicefish dans le forum PL/SQL
    Réponses: 14
    Dernier message: 24/01/2008, 11h13
  4. syntaxe trigger : unknow token
    Par nozostan dans le forum SQL
    Réponses: 5
    Dernier message: 05/12/2007, 00h53
  5. Pb de syntaxe trigger/begin.. end ?
    Par leup dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 19/01/2007, 14h04

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