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 :

Trigger BIGINT UNSIGNED [MySQL-5.1]


Sujet :

SQL Procédural MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    informatique
    Inscrit en
    Janvier 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 17
    Points : 33
    Points
    33
    Par défaut Trigger BIGINT UNSIGNED
    Bonjour ,j'aimerai bien que vous m'aider à résoudre ce probleme dans un trigger mysql,j'ai essayé la fonction cast mais le probleme persiste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TRIGGER tr2_qte_liv
    after update on detail_bl for EACH ROW
    BEGIN
     
    					set @stock=(select qte_stock-OLD.qte_liv+New.qte_liv from articles where cod_art=New.cod_art and cod_art=OLD.cod_art);
     
    					if @stock<=0 THEN
    							SIGNAL SQLSTATE '45000'
                  SET MESSAGE_TEXT='La quantité en stock est insuffisante.' , MYSQL_ERRNO = 1002;
    else
    update articles set qte_stock=qte_stock - OLD.qte_liv + NEW.qte_liv where cod_art=NEW.cod_art and cod_art=OLD.cod_art;
     
    end IF;
    END;
    Voici le message d'erreur

    BIGINT UNSIGNED value is out of range in '(qte_stock-OLD.qte_liv+New.cod_art)'

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 763
    Points
    30 763
    Par défaut
    Que cherches tu à obtenir en additionnant une quantité et un code d'article (si les noms de colonnes ont un sens fonctionnel) ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    informatique
    Inscrit en
    Janvier 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 17
    Points : 33
    Points
    33
    Par défaut
    J'ai fait une erreur c'est qte_liv et non cod_art ,lors de la modification de la quantité livrée je verifie si j'ai une quantité en stock suffisante sinon j'affiche un message d'erreur

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 763
    Points
    30 763
    Par défaut
    As-tu toujours l'erreur après avoir corrigé ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    informatique
    Inscrit en
    Janvier 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 17
    Points : 33
    Points
    33
    Par défaut
    oui ça me donne encore l'erreur :
    BIGINT UNSIGNED value is out of range in '('6' - OLD.QTE_LIV )'

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 763
    Points
    30 763
    Par défaut
    Serait-il possible que le résultat de l'expression soit une valeur négative ?
    Dans ce cas, il est tout à fait normal que le UNSIGNED BIGINT soit hors limites.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    informatique
    Inscrit en
    Janvier 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 17
    Points : 33
    Points
    33
    Par défaut
    J'ai trouvé l'erreur je faisais le cast seulement pour une colonne, mais je devrais le faire pour les trois colonnes dans l'instruction IF ,et dans la requête UPDATE il suffit de le faire pour 2 colonnes ,merci beaucoup al1_24 pour votre soutien

    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
    DROP trigger IF EXISTS tr2_qte_liv;
    CREATE TRIGGER tr2_qte_liv
    after update on detail_bl for EACH ROW
    BEGIN
     
    					set @stock=(select  CAST(qte_stock as SIGNED INTEGER) - CAST(OLD.qte_liv as SIGNED INTEGER) + CAST(NEW.qte_liv as SIGNED INTEGER) from articles where cod_art=New.cod_art and cod_art=OLD.cod_art);
     
    					if @stock<0 THEN
    							SIGNAL SQLSTATE '45000'
                  SET MESSAGE_TEXT='La quantité en stock est insuffisante.' , MYSQL_ERRNO = 1002;
    else
     
    update articles set qte_stock = CAST(qte_stock as SIGNED INTEGER) - CAST(OLD.qte_liv as SIGNED INTEGER) +NEW.qte_liv  where cod_art=NEW.cod_art and cod_art=OLD.cod_art;
     
    end IF;
    END;

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

Discussions similaires

  1. [power designer et Sybase] trigger
    Par mr_qno dans le forum Sybase
    Réponses: 4
    Dernier message: 12/07/2006, 19h32
  2. [Interbase6] Trigger : Post_event
    Par Andry dans le forum InterBase
    Réponses: 2
    Dernier message: 13/05/2003, 10h27
  3. Trigger ??
    Par XDeus dans le forum Développement
    Réponses: 6
    Dernier message: 31/03/2003, 10h44
  4. [PostgreSQL] Refus de STATEMENT dans un trigger
    Par alex2205 dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/03/2003, 13h51
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 13h27

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