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 :

probleme avec trigger sur mysql5.0


Sujet :

SQL Procédural MySQL

  1. #1
    En attente de confirmation mail
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut probleme avec trigger sur mysql5.0
    bonjour à tous.
    je veux créer un trigger qui vérifie deux valeurs à insérer et les modifie avant chaque insertion...
    mais sa n'a pas marché, pourtant le code est assez simple !!!
    voici le code de mon trigger :
    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
     
    delimiter //
    drop trigger if exists rapace.num_offre//
    create trigger rapace.num_offre before insert on rapace.offres for each row
    begin
    	declare i, q integer;
    	declare s year(4);
    set i = 1;
    set new.annee_offre = year(now());
    select N_offre as q, annee_offre as s from rapace.offres 
    		where N_offre in (select max(N_offre) from rapace.offres);
    	if s = year(now()) then
    		set i = i+1;
    	else
    		set i = 1;
    	end if;
    set new.N_offre = ((mod(year(now()),100)*1000)+i);
    end;
    //
    delimiter ;
    le message d'erreur qui me sort est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Not allowed to return a result set from a trigger
    merci d'avance

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    2 trucs en passant...et tu ne te sers pas de "q"

    C'est peut-être le subselect qui gêne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT max(N_offre), annee_offre AS s FROM rapace.offres;
    n'est pas suffisant ?

  3. #3
    En attente de confirmation mail
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    j'ai trouvé la solution
    j'ai mis la requête "select ....." dans un curseur, pourtant cette requête ne retourne qu'une seule valeur
    voici se que j'ai fait:
    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
     
    delimiter //
    drop trigger if exists rapace.num_offre//
    create trigger rapace.num_offre before insert on rapace.offres for each row
    begin
    declare w, i integer;
    declare q year(4);
    declare done int default 0;
    declare c cursor for select N_offre, annee_offre from offres where N_offre = (select max(N_offre) from offres);
    declare continue handler for sqlstate '02000' SET done = 1;
    open c;
     
    repeat
    	fetch c into w,q;
    	if not done then
    		if q = year(now()) then
    			set i= mod(w,1000) + 1;
    		else
    			set i=1;
    		end if;
    	end if;
    until done end repeat;
    close c;
    set new.annee_offre = year(now());
    set new.N_offre = ((mod(year(now()),100)*1000)+i);
    end;
    //
    delimiter ;
    et ça bien marcher.

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

Discussions similaires

  1. [Oracle] Probleme avec ora_parse sur un SELECT
    Par thomasjcj dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 24/11/2008, 13h50
  2. probleme avec serach sur plone
    Par malmzi2007 dans le forum Zope
    Réponses: 3
    Dernier message: 10/09/2006, 14h16
  3. Problème avec write sur fichier
    Par telescan dans le forum Linux
    Réponses: 8
    Dernier message: 13/12/2005, 16h09
  4. [GTK]problème avec GTK+ sur DEV-C++
    Par afrikha dans le forum Dev-C++
    Réponses: 7
    Dernier message: 01/10/2005, 14h13
  5. [JDBC]Probleme avec trigger Oracle
    Par aurel89 dans le forum JDBC
    Réponses: 2
    Dernier message: 02/08/2005, 11h53

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