Merci infiniment Antoun!!
Je vais tester tout ça et je vous tiens au courant!
En attendant je vous souhaite une excellente journée!
Version imprimable
Merci infiniment Antoun!!
Je vais tester tout ça et je vous tiens au courant!
En attendant je vous souhaite une excellente journée!
Bonsoir,
Comme prévu je reviens vers vous...je suis en train de tester le tout.
Donc j'ai bien créer la table societe_bis, elle récupère bien mes données , j'ai également créer la vue...je suppose que les vues sont dynamiques...elles se mettent à jour ttes seules...
La vue reste une table virtuelle...je préfère donc continuer à utiliser ma table 'societe' et ma nouvelle table 'societe_bis'.
Pour se faire, j'ai créer ces 3 triggers:
Pour l'update: -> j'ai rajouter le "where societe.IDsociete=societe_bis.IDsociete"
Pour l'insertion: -> pas de changementCode:
1
2
3
4
5 CREATE TRIGGER soc_AU AFTER UPDATE ON societe FOR EACH ROW UPDATE societe_bis SET societe_bis.InfosSoc2 = new.InfosSoc2 where societe.IDsociete=societe_bis.IDsociete
Pour la suppression:Code:
1
2
3
4
5 CREATE TRIGGER soc_AI AFTER INSERT ON societe FOR EACH ROW INSERT INTO societe_bis (IDsociete, InfosSoc2) VALUES (new.IDsociete, new.InfosSoc2) ;
La suppression pose problème: à la création du trigger, j'ai le message d'erreur suivant:Code:
1
2
3
4
5 CREATE TRIGGER soc_AU AFTER DELETE ON societe FOR EACH ROW DELETE FROM societe_bis WHERE societe_bis.IDsociete = new.IDsociete ;
Il faudrait pas plutôt mettre:Citation:
#1363 - There is no NEW row in on DELETE trigger
Les triggers sont des déclencheurs si j'ai bien compris...ils s'executent automatiquement je n'ai pas besoin de les appeler depuis mon code PHP?Code:
1
2
3
4 CREATE TRIGGER soc_AU AFTER DELETE ON societe FOR EACH ROW DELETE FROM societe_bis WHERE societe_bis.IDsociete = societe.IDsociete ;
Merci encore pour votre aide.
J'ai bien testé les triggers pour l'ajout ça fonctionnent nikel...
Pour la suppression, mon code est juste? parce que du coup comme le trigger n'est pas encore mis en place, quand je créer un nouvelle société, ça ne fonctionne pas car il met dit que l'IDsociete existe déjà, ce qui est faux dans la table societe mais vrai dans la table societe_bis...
Par contre pour la modification, j'ai un autre soucis bizarrement j'ai l'erreur:
alors que IDsociete existe bien dans ma table 'societe'Citation:
Erreur SQL !
Unknown column 'societe.IDsociete' in 'where clause'
Enfin bref pas mal de petit avec les triggers, pourriez-vous les verifier?
Merci d'avance
Hello,
Désolé, j'ai fait deux erreurs dans le trigger de DELETE, voici la version correcte :
D'une part je donnais le même nom à deux triggers (bête erreur de copier-coller :oops:), et surtout j'utilisais la pseudo-table new, qui représente les données qui viennent d'être ajoutées dans un INSERT ou un UPDATE, et n'existe effectivement pas dans un DELETE, où il faut utiliser la pseudo-table old, qui représentent les données qui viennent d'être supprimées dans un UPDATE ou un DELETE.Code:
1
2
3
4 CREATE TRIGGER soc_AD AFTER DELETE ON societe FOR EACH ROW DELETE FROM societe_bis WHERE societe_bis.IDsociete = old.IDsociete ;
Quant à ta version :La table societe y est effectivement inconnue car elle n'est pas dans le FROM... ce qui est heureux, car sinon l'intégralité de societe_bis serait effacée !Code:
1
2
3
4 CREATE TRIGGER soc_AU AFTER DELETE ON societe FOR EACH ROW DELETE FROM societe_bis WHERE societe_bis.IDsociete = societe.IDsociete ;
"Déclencheur" est effectivement la traduction française de "trigger". Ils se déclenchent tous seuls lorsque l'événement prévu (par ex. AFTER INSERT pour soc_AI) intervient, et ceci pour chaque ligne affectées (FOR EACH ROW).
Enfin les vues sont effectivement des tables virtuelles... plutôt que de dire qu'elles se mettent à jour toutes seules, il est plus exacte de dire que ce ne sont que des requêtes enregistrées, qui sont ré-exécutées à chaque appel.
Merci beaucoup!!
Tout fonctionne à merveille!!
Bonne continuation Antoun...et qui sait peut être à bientôt...lol ;)