Bonjour à tous,

J'espère que qqn saura m'éclairer.
Je monte actuellement une petite base de données et j'ai découvert le TRIGGER.
En voyant les possibilités conceptuelles dudit TRIGGER, j'ai vraiment accroché.

Malheureusement je me heurte à une petite difficulté.

Imaginons deux tables totalement identiques.
La premiere -> hdd_today
la seconde -> hdd_histo
Les champs sont : id_hdd - lettre - p_libre - date_hdd

je voudrais que lors d'un import dans la table hdd_today, les données soient dupliquées dans hdd_histo seulement si la date de hdd_today est plus grande de sept jours par rapport à la date la plus récente de hdd_histo (ne me fusillez pas maintenant )

Pour faire simple j'importe tous les jours dans ma bdd les espaces disques d'une centaine de serveurs et je veux passer une version de cette importation dans l'historique une fois tous les 7 jours.

Voici le TRIGGER que j'ai codé mais il ne fonctionne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 
CREATE TRIGGER COPIE_TABLE
AFTER INSERT 
ON hdd_today
FOR EACH ROW
IF ((SELECT DATEDIFF(NEW.date_hdd,(SELECT date_hdd FROM hdd_histo ORDER BY date_hdd DESC LIMIT 0,1 )))<>0)                                                  
THEN
INSERT INTO hdd_histo(id_hdd,lettre,p_libre,date_hdd) VALUES (NEW.id_hdd,NEW.lettre,NEW.p_libre,NEW.date_hdd)
la fonction SELECT DATEDIFF(date1, date2) renvoie la différence en jours entre deux dates.

Mais je crois que je me suis un peu perdu dans ma logique, car :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT date_hdd 
FROM hdd_histo 
ORDER BY date_hdd DESC 
LIMIT 0,1
renverra tout le temps la date la plus élevée de la base et je pense que dès le second traitement la condition ne sera plus remplie.

Attention id_hdd n'est pas unique, c'est l'id permettant de faire la jointure avec les serveurs

Si qqn a compris et peut m'aider ce serais vraiment super.

Merci par avance