|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : décembre 2003 Messages : 257 ![]() |
Je m'explique ! J'ai une table qui possede des periodes pour des salles. Je voudrais creer un trigger qui joind les periodes qui se 'touchent' :sweat: automatiquement, apres insertion d'un nouvel enregistrement.
par exemple il y a l'enregistrement : salle debut fin 1 13/02/06 16/02/06 2 10/02/06 11/02/06 on rentre : salle : 1 , debut : 16/02/06, fin : 18/02/06 et au lieu que ça donne : salle debut fin 1 13/02/06 16/02/06 2 10/02/06 11/02/06 1 16/02/06 18/02/06 ça donne : salle debut fin 1 13/02/06 18/02/06 2 10/02/06 11/02/06 est ce possible ? J'ai trouvé la premiere partie qui modifie la date : begin UPDATE PERIODE SET date_fin = new.date_fin WHERE date_fin = new.date_debut AND id = new.id; end Le probleme c'est que ça ne supprime pas le dernier nuplet inséré qui n'a plus de raison d'etre du coup. J'avais tenté un : DELETE FROM PERIODE WHERE id_resa = new.id_resa; juste apres le premier trigger, mais ça m'effacait tous les enregitrement que je faisais evidement. Comment faire pour n'executer cette commande que s'il y a eu un update ? |
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Inscription : décembre 2004 Messages : 142 ![]() |
Pourquoi faire un DELETE ?
Quelque chose comme ça devrait approcher de la solution : Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() Serge LESPAGNARDConsultant informatique Inscription : janvier 2004 Messages : 587 ![]() |
Pourquoi ne pas utiliser une procédure stockée pour faire ton insertion ? Tu pourrais faire tous les contrôles nécessaires dans la procédure, et faire soit un insert, soit un update en fonction du cas rencontré.
Je crois aussi que tu devrais prévoir une clé unique (avec générateur) pour ta table, ça te facilitera le code dans la PS. @+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com