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/05/2011, 12h22   #1
Nouveau Membre du Club
 
Chauvin Baptiste
Inscription : décembre 2009
Messages : 59
Détails du profil
Informations personnelles :
Nom : Chauvin Baptiste

Informations forums :
Inscription : décembre 2009
Messages : 59
Points : 26
Points : 26
Par défaut requête automatique entre 2 tables

Bonjour à tous!

Dans la base de données j'ai (entre autres) 3 tables 'MEMBRES', 'GROUPES', 'DROITS' ces 3 tables sont reliées par 2 tables d'associations 'est_membre' et 'est_autorise'.

|MEMBRES|---|est_membre|---|GROUPES|---|est_autorise|---|DROITS|

Il existe plusieurs groupes liés à des droits spécifiques. Un membre obtient donc des droits par les biais des groupes. Dans ces groupes j'en ai un qui m'intéresse tout particulièrement c'est le groupe 'default'.

Je souhaiterais qu'a chaque fois qu'un nouveau membre est inséré dans la base 'MEMBRES' il soit automatiquement ajouté au groupe 'default'. Mais pour ce faire il doit être ajouté dans l'association 'est_membre'.

Exemple:
L'utilisateur 'toto' dans la table 'MEMBRES' à l'identifiant -> 32
Le groupe 'default' dans la table 'GROUPES' à l'identifiant -> 1

Il faut donc relier dans la table d'association 'est_membre' les deux identifiants 'idMembre = 32' et 'idGroupe = 1'.

Ma question est donc : est-il possible de créer une requête automatique directement en SQL pour "routiner" cette association entre les deux tables?
BLJ.CHAUVIN est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/05/2011, 14h12   #2
Membre chevronné
 
Avatar de hmimoud
 
Homme
Étudiant
Inscription : mai 2011
Messages : 122
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

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

Informations forums :
Inscription : mai 2011
Messages : 122
Points : 728
Points : 728
Salut,

A chaque fois que tu insères un nouveau membre insère juste après son identifiant et le "1" dans la table "est_membre".
Met ces 2 instructions l'un après l'autre pour qu'à chaque fois que tu les appelles ça fonctionnera automatiquement !
hmimoud est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 25/05/2011, 14h13   #3
Membre chevronné
 
Avatar de hmimoud
 
Homme
Étudiant
Inscription : mai 2011
Messages : 122
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

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

Informations forums :
Inscription : mai 2011
Messages : 122
Points : 728
Points : 728
Je ne vois pas d'autre solutions que celle ci !
hmimoud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 15h10   #4
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
jeter un oeil sur l'utilisation des triggers, ca peut vous aider

Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 25/05/2011, 15h16   #5
Membre chevronné
 
Avatar de hmimoud
 
Homme
Étudiant
Inscription : mai 2011
Messages : 122
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

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

Informations forums :
Inscription : mai 2011
Messages : 122
Points : 728
Points : 728
Pense aussi au procédures stockées!
hmimoud est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 25/05/2011, 17h31   #6
Nouveau Membre du Club
 
Chauvin Baptiste
Inscription : décembre 2009
Messages : 59
Détails du profil
Informations personnelles :
Nom : Chauvin Baptiste

Informations forums :
Inscription : décembre 2009
Messages : 59
Points : 26
Points : 26
Ok merci je vais regarder les procédures stockées et les triggers pour voir ce que c'est et si ça peut m'aider.
BLJ.CHAUVIN est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/05/2011, 13h19   #7
Nouveau Membre du Club
 
Chauvin Baptiste
Inscription : décembre 2009
Messages : 59
Détails du profil
Informations personnelles :
Nom : Chauvin Baptiste

Informations forums :
Inscription : décembre 2009
Messages : 59
Points : 26
Points : 26
En effet vous aviez raison, les triggers sont nos amis

Voici comment j'ai réglé mon problème:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DELIMITER //
 
CREATE TRIGGER lienUserMembre 
AFTER INSERT ON usager
FOR EACH ROW
BEGIN
	INSERT INTO est_membre (idUser,IdGroupe) VALUES (NEW.idUser, 1);
END//
 
CREATE TRIGGER delMembreGroupe
BEFORE DELETE ON usager
FOR EACH ROW
BEGIN
 DELETE FROM est_membre WHERE idUser = OLD.idUser;
END//
DELIMITER ;
Je ne connaissais pas mais maintenant je vais en mettre un peu partout, c'est vraiment magique!

THX
BLJ.CHAUVIN est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h28.


 
 
 
 
Partenaires

Hébergement Web