MySQL Déclenche - APRÈS déclencheur INSERT + UDF sys_exec() question

Problème: j'ai une table qui détient des records. Après l'insertion a été fait, je tiens à appeler un programme externe (script php) via MySQL sys_* Udf.
Maintenant, la question - le déclencheur, j'ai passe l'ID de l'enregistrement du script.
Lorsque j'essaie de tirer les données via le script, j'obtiens 0 lignes.
Au cours de mes propres essais, j'en suis venu à la conclusion que le déclencheur invoque le script php et transmet les paramètres AVANT l'insertion s'est produit, donc je n'ai pas de dossiers pour l'ID donné.
J'ai testé cela sur MySQL 5.0.75 et 5.1.41 (Ubuntu OS).
Je peux confirmer que les paramètres sont passés au script avant même l'insert se produit parce que j'ai ajouté sleep(2); à mon script php et j'ai obtenu les données correctement.
Sans dormir(); déclaration, je reçois 0 enregistrements pour l'ID donné.

Ma question est - comment résoudre ce problème sans avoir à coder en dur une sorte de retard dans le script php?
Je n'ai pas la liberté d'en supposant que 2 secondes ou 10 secondes) sera suffisante retard, donc je veux que tout le flux "naturellement", quand une commande est terminée - l'autre est exécuté.

Je suppose que si le déclencheur est de type AFTER INSERT, le tout dans le corps de l'élément déclencheur sera exécuté après que MySQL fait insère les données.

Disposition de Table:

CREATE TABLE test (
id int not null auto_increment PRIMARY KEY,
random_data varchar(255) not null
);

Déclencher la mise en page:

DELIMITER $$

CREATE TRIGGER `test_after_insert` AFTER INSERT ON `test` 
FOR EACH ROW BEGIN

SET @exec_var = sys_exec(CONCAT('php /var/www/xyz/servers/dispatcher.php ', NEW.id));
END;
$$

DELIMITER ;

Avertissement: je sais que les questions de sécurité lors de l'utilisation de sys_exec fonction, mon problème est que MySQL ne pas insérer d'ABORD et ENSUITE appeler le script avec les paramètres nécessaires.
Si quelqu'un peut jeter une certaine lumière sur la façon de résoudre ce problème ou a une approche différente qui n'implique pas de SELECT INTO OUTFILE et à l'aide de la GPA - je lui en serais très reconnaissant. Merci à l'avance.

Veuillez préciser: Le script PHP dispatcher.php les incendies, établit un client de connexion à votre base de données, puis fait une requête? Est ce que le droit?
De données est insérée. Déclencheur est appelé et transmet l'ID de l'dispatcher.php. Dispatcher.php récupère la ligne et l'envoie au navigateur. Raison pour laquelle je ne suis pas de l'envoi de l'ensemble des données sur l'insert est parce que je vais les insérer dans un tableau mais je vais extraire les données à partir de la vue - donc, je ne connais pas toutes les colonnes que je vais utiliser à un moment donné.
Donc, dispatcher.php a son propre client de connexion à mySQL? Ce n'est pas fiable, car l'insertion / mise à jour de transaction dans laquelle votre déclencheur s'exécute n'est pas complète jusqu'à ce que votre déclencheur est fait. Donc, dispatcher.php voit soit incompatible ou pré-données de la transaction. En tout cas, c'est comme manger une tranche de tarte pendant que la tarte est encore dans le four. les déclencheurs doivent rester à l'intérieur de la base de données du serveur.
Soit vous n'avez pas lu ce que j'ai écrit ou ne comprenez pas la question, puisque vous avez posé une question après je l'ai expliqué dans plutôt de manière simple ce qu'il se passe. Je n'ai pas l'intention d'être impoli, mais votre réponse n'est pas de m'aider dans toute sorte de façon.
avez-vous jamais comprendre cela?

OriginalL'auteur Mihael | 2010-09-06