Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Trigger – AFTER INSERT-Trigger + UDF sys_exec()-Problem

Auch wenn Sie einen AFTER-Trigger verwenden, wird die Zeile noch nicht festgeschrieben. Aber sys_exec() kehrt nicht zurück, bis das PHP-Skript beendet wird, sodass der AFTER-Trigger nicht abgeschlossen werden kann, daher können Sie auch das INSERT nicht ausführen.

Dies ist beabsichtigt. Schließlich können Sie innerhalb derselben Transaktion weitere Operationen ausführen oder die Transaktion rückgängig machen. Das ist das Problem beim Aufrufen externer Prozesse von einem Trigger:Externe Prozesse können keine Daten innerhalb des Geltungsbereichs der Transaktion in der Datenbank sehen.

Sie sollten diese Aufgabe nicht mit einem Trigger ausführen. Bestenfalls sollten Sie den Trigger verwenden, um eine "Flag"-Spalte zu setzen und dann einen externen Prozess schreiben, um nach Zeilen mit gesetztem Flag zu suchen und dann dieses PHP-Skript aufzurufen. Auf diese Weise werden nur Zeilen verarbeitet, die erfolgreich eingefügt UND übergeben wurden.