sql >> Database teknologi >  >> RDS >> Mysql

MySQL Triggere - EFTER INSERT trigger + UDF sys_exec() problem

Selvom du bruger en AFTER-udløser, er rækken ikke forpligtet endnu. Men sys_exec() vender ikke tilbage, før php-scriptet afsluttes, så AFTER-triggeren kan ikke fuldføres, derfor kan du heller ikke begå INSERT.

Dette er ved design. Når alt kommer til alt, kan du udføre flere operationer inden for samme transaktion, eller du kan rulle transaktionen tilbage. Det er problemet med at påkalde eksterne processer fra en trigger:eksterne processer kan ikke se data inden for transaktionens omfang i databasen.

Du bør ikke udføre denne opgave med en trigger. I bedste fald bør du bruge triggeren til at indstille en "flag"-kolonne og derefter skrive en ekstern proces for at lede efter rækker med flaget, og derefter kalde det PHP-script. På den måde vil kun rækker, der er blevet indsat OG committet, blive behandlet.



  1. Har brug for Oracle SQL for at opdele dato/tidsinterval efter dag

  2. Indsæt data i tabeller forbundet med fremmednøgle

  3. Hvordan indlæser jeg en lokal .SQL-fil i MySQL?

  4. MySQL går ned ved opstart