J'ai une application où j'ai besoin d'INSÉRER une valeur auto_increment d'un PK dans une autre table. Je sais comment faire cela en PHP, mais j'ai besoin de faire cela au niveau DB, puisque je ne peux pas changer la logique du programme. Je suis nouveau pour les déclencheurs, donc je suis sûr que ce sera une réponse facile pour quelqu'un. Voici ce que j'ai jusqu'à présent:Création de Trigger MySQL
DELIMITER //
CREATE TRIGGER new_project AFTER INSERT ON m_quality_header
FOR EACH ROW
BEGIN
INSERT INTO m_quality_detail (d_matl_qa_ID) VALUES (NEW.h_matl_qa_ID);
END//
DELIMITER ;
Je veux juste la valeur de la valeur AUTO_INCREMENT de h_matl_qa_ID à insérer un nouvel enregistrement dans d_matl_qa_ID. L'erreur que je reçois est:
"This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
Mais, je ne veux pas mettre à jour la table qui a la gâchette, alors pourquoi est mon code actuel considéré comme un déclencheur « multiple »?
Ceci est sur MySQL 5.0.45-7.el5 fonctionnant sur un serveur CentOS 5 (Intel 64 bits) Si je le dois, je peux modifier le code PHP, mais cela doit être le dernier recours.
Avez-vous défini un autre déclencheur 'AFTER INSERT ON m_quality_header'? Utilisez 'SHOW TRIGGERS WHERE événement = 'INSERT' ET timing = 'AFTER' ET \' table \ '= 'm_quality_header'' à vérifier (http://dev.mysql.com/doc/refman/5.0/fr/show- triggers.html). – outis
En cas de supposition, l'option 'BEFORE EACH ROW' est considérée comme un trigger multiple, car elle se déclenche une fois pour chaque ligne insérée. – Powerlord
OK, j'ai obtenu mon Trigger fonctionne correctement maintenant .. Voici le code final que je avais besoin pour que cela fonctionne comme je le voulais: DELIMITER // DROP TRIGGER IF EXISTS new_project // CREATE TRIGGER new_project APRÈS INSERT ON m_quality_header POUR CHAQUE RANGEE BEGIN INSERT INTO m_quality_detail VALUES (d_matl_qa_ID, d_matl_qa_project_test_number) (LAST_INSERT_ID(), LAST_INSERT_ID()); END // DELIMITER; – bgarlock