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 Procédural MySQL Discussion :

Syntaxe TRIGGER . [MySQL-5.6]


Sujet :

SQL Procédural MySQL

  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 confirmé Avatar de isabelle.letrong
    Femme Profil pro
    Conseil - Consultante en systèmes d'information
    Inscrit en
    Juillet 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juillet 2010
    Messages : 109
    Points : 487
    Points
    487
    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 bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    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...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    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 : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    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