Bonjour,
Je possede une base de donnèes pour gerer utilisateur, boite de messagerie, message. Je crèè quelque trigger pour automatiser un peut la gestion:
- sur creation d'un utilisateur, creation de boite de messagerie standard
- sur suppression d'un utilisateur, suppression de ses boite de messagerie
- sur suppression des boite de messagerie, suppression de leur message
lors de la creation du 2ème(ou plus) utilisateur les boite de messagerie ne peuvent etre generer car la clef '0' est dupliquer.
la 1ere chose auquel on pense est "on assigne tout le temp 0 en clef primaire de boite de messagerie" mais non....(ou sinon je ne comprend plus se que je tape)
Creation de Table
Creation des Triggers et Insertion d'un utilisateur:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 DROP DATABASE IF EXISTS `mediamanager`; CREATE DATABASE `mediamanager`; USE `mediamanager`; CREATE TABLE user( id_user VARCHAR(45) NOT NULL, userName VARCHAR(45) NOT NULL, password VARCHAR(45) NOT NULL, email VARCHAR(45) NOT NULL, question VARCHAR(45) NOT NULL, reponse VARCHAR(45) NOT NULL, PRIMARY KEY (`id_user`) ) ENGINE=InnoDB; CREATE TABLE boite_message( id_boite_message INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, id_user VARCHAR(45) NOT NULL, nom VARCHAR(45) NOT NULL, obligatoire BOOLEAN NOT NULL, PRIMARY KEY(`id_boite_message`) ) ENGINE=InnoDB; CREATE TABLE message( id_message INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, id_expediteur VARCHAR(45) NOT NULL, id_boite_message INTEGER UNSIGNED NOT NULL, titre VARCHAR(45) NOT NULL, corp TEXT NOT NULL, date DATETIME, lu BOOLEAN NOT NULL, PRIMARY KEY(`id_message`) ) ENGINE=InnoDB; CREATE VIEW liste_message AS SELECT b.id_user AS 'id_user', b.id_boite_message, u1.userName AS 'expediteur', m.id_message, titre, corp, DATE_FORMAT(date,GET_FORMAT(DATE,'EUR')) AS 'date', lu FROM user u1, user u2, boite_message b, message m WHERE m.id_expediteur = u1.id_user AND u2.id_user = b.id_user AND b.id_boite_message = m.id_boite_message;
merci pour votre aideCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 USE `mediamanager`; DELIMITER | /* CREATION UTILISATEUR => CREATION BOITE DE MESSAGERIE STANDARD */ CREATE TRIGGER BoiteMessageStandard AFTER INSERT ON user FOR EACH ROW BEGIN INSERT INTO boite_message (id_user, nom, obligatoire) VALUES(NEW.id_user, 'Reception', '1'); INSERT INTO boite_message (id_user, nom, obligatoire) VALUES(NEW.id_user, 'Emission', '1'); INSERT INTO boite_message (id_user, nom, obligatoire) VALUES(NEW.id_user, 'Corbeille', '1'); END; | /* SUPPRESSION UTILISATEUR => SUPPRESSION BOITE MESSAGERIE */ CREATE TRIGGER PurgeBoiteMessage AFTER DELETE ON user FOR EACH ROW BEGIN DELETE FROM boite_message WHERE id_user = DELETED.id_user; END; | /* SUPPRESSION BOITE MESSAGE => SUPPRESSION MESSAGE */ CREATE TRIGGER PurgeMessage AFTER DELETE ON boite_message FOR EACH ROW BEGIN DELETE FROM message WHERE id_boite_message = DELETED.id_boite_message; END; | DELIMITER ; INSERT INTO user VALUES('1', 'Admin', 'admin', 'mail@mail.com', 'Quel est le nom de l''administrateur?', 'TRUC');