Nawet jeśli używasz wyzwalacza AFTER, wiersz nie jest jeszcze zatwierdzony. Ale sys_exec() nie zwraca, dopóki skrypt php nie zostanie zamknięty, więc wyzwalacz AFTER nie może się zakończyć, dlatego też nie możesz zatwierdzić INSERT.
To jest zgodne z projektem. W końcu możesz wykonać więcej operacji w ramach tej samej transakcji lub możesz wycofać transakcję. Na tym polega problem z wywoływaniem procesów zewnętrznych z wyzwalacza:procesy zewnętrzne nie widzą danych w zakresie transakcji w bazie danych.
Nie powinieneś wykonywać tego zadania z wyzwalaczem. W najlepszym przypadku powinieneś użyć wyzwalacza, aby ustawić kolumnę „flag”, a następnie napisać zewnętrzny proces, aby wyszukać wiersze z ustawioną flagą, a następnie wywołać ten skrypt PHP. W ten sposób zostaną przetworzone tylko wiersze, które zostały pomyślnie wstawione ORAZ zatwierdzone.