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 25/01/2012, 12h26   #1
Membre du Club
 
Inscription : août 2009
Messages : 197
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations forums :
Inscription : août 2009
Messages : 197
Points : 59
Points : 59
Par défaut Trigger sur une table d'une autre base

J'ai une base "base1" et une base "base2".
J'aimerais définir dans base1 un trigger qui réagit à des événements dans base2.

Voici ce que je fais en étant dans base1 :

Code :
1
2
3
4
5
6
7
8
 
DROP TRIGGER IF EXISTS `trigger1`;
 
DELIMITER //
CREATE TRIGGER `trigger1` BEFORE UPDATE ON `base2.tableBase2`
 FOR EACH ROW BEGIN
    INSERT INTO tableBase1( champBase1) VALUES(champBase2);
END
Il me donne comme erreur qu'il ne trouve pas la table "base1.base2.tableBase2".

Ce que j'essaye de faire est - il seulement réalisable ?

Merci
Tristan Zwingelstein est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 22h22   #2
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 873
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 873
Points : 1 360
Points : 1 360
salut,

déjà l'arborescence des noms en mysql ou sql en générale s'écrit pas comme ça:
`base2.tableBase2`
mais comme ça:
`base2`.`tableBase2`

le "." ne doit pas être entre les cotes inversées... elles ne font qu'encadrer les noms... sinon pour lui le . fait partie du nom...

donc attention...

les triggers ont plein de limitations donc je suis pas sur du tout que tu puisses accéder à une autre bd depuis lui...

tu seras peut-être obliger de faire une procédure stockée...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 15h51   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par ericd69 Voir le message
déjà l'arborescence des noms en mysql ou sql en générale s'écrit pas comme ça:
`base2.tableBase2`
mais comme ça:
`base2`.`tableBase2`
Les apostrophes inversées ne sont nécessaires que si les noms de table ou de colonnes comportent de espaces ou autres caractères pouvant poser problème.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 19h16   #4
Membre du Club
 
Inscription : août 2009
Messages : 197
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations forums :
Inscription : août 2009
Messages : 197
Points : 59
Points : 59
Citation:
Envoyé par ericd69 Voir le message
tu seras peut-être obliger de faire une procédure stockée...
Tu veux dire que je serai obligé de déclarer mes triggers dans base2 n'est - ce pas ?
Tristan Zwingelstein est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 09h37   #5
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 873
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 873
Points : 1 360
Points : 1 360
non que c'est pas sur du tout que ça soit permis de jouer sur 2 bases en même temps...

les déclencheurs, c'est pas pensé pour ça dans mysql, ils sont plus fait pour faire des trucs directement sur la table en cours (contrôle d'intégrité, validation des données, etc...)

corrige ta syntaxe donc déjà et n'oublie pas de bien explicitement dire à quelle base appartient chaque table (hormis celle ou s'exécute ton déclencheur, c'est pas obligatoire là)

ensuite la dénomination des valeurs est mauvaise coté base2...

lis bien la syntaxe des déclencheurs dans la doc avant de tester car tu auras encore des erreurs...

__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h05.


 
 
 
 
Partenaires

Hébergement Web