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

Trigger MySQL - Problema AFTER INSERT trigger + UDF sys_exec()

Anche se utilizzi un trigger AFTER, la riga non è ancora stata salvata. Ma sys_exec() non ritorna fino all'uscita dello script php, quindi il trigger AFTER non può essere completato, quindi non puoi nemmeno eseguire il commit di INSERT.

Questo è di progettazione. Dopotutto, puoi eseguire più operazioni all'interno della stessa transazione o puoi annullare la transazione. Questo è il problema con il richiamo di processi esterni da un trigger:i processi esterni non possono vedere i dati nell'ambito della transazione nel database.

Non dovresti eseguire questa attività con un trigger. Nella migliore delle ipotesi, dovresti usare il trigger per impostare una colonna "flag" e quindi scrivere un processo esterno per cercare le righe con il flag impostato e quindi invocare lo script PHP. In questo modo verranno elaborate solo le righe che sono state inserite correttamente e salvate.