Triggers

thesuixx
Triggers

Bonjour,
je développe actuellement un petit site web avec une base de données MySQL.
Dans cette base de données, je veux créer plusieurs triggers
je vous décris ici les deux tables sur lesquelles agit le trigger:
- message(num_message(PK), type_message, contenu_message, num_emmeteur, num_destinataire, date_emission, num_alliance_destinataire, message_lu)
- recevoir(num_message(PK), num_joueur(PK), message_lu)
en principe, pour les messages n'ayant qu'un seul destinataire, on ne se sert pas de la table recevoir, num_alliance_destinataire sera alors à 0 et message_lu passera à vrai quand le destinataire lit le message
en revanche, quand le message est adressé à l'alliance, tous les membres de l'alliance doivent pouvoir le recevoir, on ajoute donc une ligne dans la table recevoir pour chaque membre de l'alliance, avec une référence vers le message et le booléen message_lu
c'est cette partie que je veux automatiser, en faisant en sorte qu'un trigger crée automatiquement ces lignes

une image du MLD est dispo ici:
http://www.imagup.com/imgs/1219610261.html
(dans la table joueur, remplacez num_joueur par num_alliance_destinataire et ajoutez message_lu
la table type_role n'est pas encore finie, je vais y ajouter une colonne description et quelques autres trucs

j'ai donc commencé à développer ce trigger:

CREATE TRIGGER TR_recevoir_message AFTER INSERT
ON message FOR EACH ROW 
(BEGIN label_action
IF (NEW.num_alliance_destinataire != 0)
	BEGIN label_insertion
	-- ici, je devrais faire un truc genre FOR ROW IN (SELECT DISTINCT r.num_joueur AS numero_joueur FROM role r WHERE r.num_alliance=NEW.num_alliance_destinataire )
	(INSERT INTO 'recevoir' VALUES (NEW.num_message, numero_joueur, 0))
	-- fin du for
	END label_insertion
END label_action); 

voila, alors je voulais savoir ce que je dois modifier sur ce trigger pour qu'il marche
fredericmazue

J'ai peut être tout faux, mais pourquoi faire ça avec un trigger et pas tout simplement depuis le code de l'application ?

thesuixx

c'est aussi faisable,

à vrai dire, je voulais faire un trigger plus pour m'entrainer qu'autre chose. Je connais bien le SQL mais j'ai très peu d'experience dans l'écriture de fonctions SQL ou de triggers.