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 08/02/2012, 13h28   #1
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : janvier 2012
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 2
Points : 1
Points : 1
Par défaut mySql : trigger sur une vue qui référence plusieurs tables

Bonjour,

Une question sur les fonctionnalités de Mysql 5.5.16 avec PhpMyAdmin version 3.4.9 : Peut-on réaliser un trigger "instead of insert or delete or update" pour mettre à jour les tables référencées dans une vue :

exemple :

code de la vue :
Code :
CREATE OR REPLACE VIEW w_exempleVue AS SELECT t1.champ1, t1.champ2,      t2.champ3, t2.champ4 FROM t1, T2 WHERE t1.cle = t2.cle;
code du trigger:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TRIGGER tr_exemple instead of INSERT OR UPDATE OR DELETE ON w_exempleVue
FOR each row
begin
IF inserting then
  INSERT INTO t1 (w_exempleVue.champ1,w_exempleVue.champ2) WHERE t1.cle = w_exempleVue.cle;
   INSERT INTO t2 (w_exempleVue.champ3,w_exempleVue.champ4) WHERE t2.cle = w_exempleVue.cle;
else IF updating
  UPDATE t1 SET t1.champ1 =w_exempleVue.champ1, t1.champ2 = w_exempleVue.champ2 WHERE t1.cle = w_exempleVue.cle;
  UPDATE t2 SET t2.champ3 =w_exempleVue.champ3, t2.champ4 = w_exempleVue.champ4 WHERE t2.cle = w_exempleVue.cle;
else IF deleting
  DELETE FROM t1 WHERE t1.cle = w_exempleVue.cle;
  DELETE FROM t2 WHERE t1.cle = w_exempleVue.cle;
end IF;
end;
Ce code est à titre d'exemple, désolé pour les incohérences s'il y en avait, mais il sert juste à illustrer la fonctionnalités que je cherche à implanter dans phpMyAdmin avec mySql lorsque on souhaite qu'une vue mette à jour plusieurs tables qu'elle référence.

Merci d'avance pour vos réponses.
charlesS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 11h52   #2
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 875
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 : 875
Points : 1 368
Points : 1 368
salut,

c'est une syntaxe oracle... tu ne peux pas faire de trigger sur une vue en mysql, lis la doc
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2012, 14h50   #3
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : janvier 2012
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 2
Points : 1
Points : 1
Ok, c'est bien ce qu'il me semblait avec la doc, mais j'espérais cette fonctionnalité avec les dernières versions. Je vais donc migrer vers postgre("la BD presque complète du pauvre"). Merci.
charlesS 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 21h05.


 
 
 
 
Partenaires

Hébergement Web