sql >> Databasteknik >  >> RDS >> Mysql

MySQL-utlösare - EFTER INSERT trigger + UDF sys_exec() problem

Även om du använder en AFTER-utlösare är raden inte ansluten än. Men sys_exec() returnerar inte förrän php-skriptet avslutas, så AFTER-utlösaren kan inte slutföras, därför kan du inte heller utföra INSERT.

Detta är designat. När allt kommer omkring kan du göra fler operationer inom samma transaktion, eller så kan du återställa transaktionen. Det är problemet med att anropa externa processer från en utlösare:externa processer kan inte se data inom ramen för transaktionen i databasen.

Du bör inte göra den här uppgiften med en trigger. I bästa fall bör du använda triggern för att ställa in en "flagga"-kolumn och sedan skriva en extern process för att leta efter rader med flaggan och sedan anropa det PHP-skriptet. På det sättet kommer bara rader som har infogats OCH bekräftats att bearbetas.



  1. Hämta koordinaterna för MySQL-punkttypen

  2. Ge tabellnivåbehörigheter i SQL Server

  3. Hur man fyller ett nummer med ledande nollor i MariaDB

  4. Använda variabel för att ställa in mysql INNODB AUTO_INCREMENT tabellvärde