Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/10/2006, 11h14   #1
Invité de passage
 
Inscription : octobre 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 16
Points : 3
Points : 3
Par défaut Requete INSERT INTO (SELECT

Bonjour,

je suis en train de develloper un trigger dans lequel d'abord je vais récuperer le nom de la table A dans une autre table B et ensuite j'essaie de faire un INSERT INTO A mais ce la ne fonctionne pas.

Voici mon code:
Code :
1
2
3
4
5
CREATE TRIGGER INSERT_NOTICIASPR AFTER INSERT ON NOTICIASPR FOR EACH ROW 
BEGIN 
SELECT CNOM AS t_merge_correspondant FROM NOTICIASREF WHERE (NEW.DFECHA > DDEB AND NEW.DFECHA < DFIN);
INSERT INTO t_merge_correspondant SELECT * FROM NOTICIASPR WHERE NCOMUNICADOPRID=NEW.NCOMUNICADOPRID; 
END;
Ma question se résume donc a
"Peux t on faire un INSERT INTO (SELECT....) SELECT * FROM...."

Merci d'avance pour votre aide
jojob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 11h21   #2
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Bonjour,

Tu peux faire ça avec du SQL dynamique via un prepared statement : http://www.developpez.net/forums/d66953/bases-donnees/mysql/sql-procedural/pb-creation-tables/

Par contre si tu stockes des noms de tables dans une colonne c'est peut-être qu'il y a un problème de modélisation.
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 11h38   #3
Invité de passage
 
Inscription : octobre 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 16
Points : 3
Points : 3
Par défaut merci, mais marche tjrs pas

Merci pour ta reponse rapide je viens de modifier le code, ca ne fonctionne toujours pas a moins que j ai une erreur dans mon code, le pense que le probleme est t_merge_correspondant est la retour d'un SELECT et c'est considéré comme un tableau a une valeur certes mais un tableau quand meme.

De ce fait un INSERT INTO tableau ca bug.

Une solution????



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TRIGGER INSERT_NOTICIASPR AFTER INSERT ON NOTICIASPR FOR EACH ROW 
BEGIN 
SELECT CNOM AS t_merge_correspondant FROM NOTICIASREF WHERE (NEW.DFECHA > DDEB AND NEW.DFECHA < DFIN);
SET @requete := CONCAT('INSERT INTO ',
                                t_merge correspondant,
                                ' SELECT * FROM NOTICIASPR WHERE NCOMUNICADOPRID=NEW.NCOMUNICADOPRID;');
 
    PREPARE requete FROM @requete;
    EXECUTE requete;
    DEALLOCATE PREPARE requete;
 
 
END;
jojob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 11h45   #4
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Je pense que tu devrais plutôt passer par DECLARE t_merge_correspondant puis SELECT ... INTO t_merge_correspondant.

Cf http://dev.mysql.com/doc/refman/5.0/...statement.html et l'exemple que je t'ai donné.
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h36.


 
 
 
 
Partenaires

Hébergement Web