Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Gatilhos do MySQL - AFTER INSERT trigger + UDF sys_exec() problema


Mesmo se você usar um gatilho AFTER, a linha ainda não foi confirmada. Mas sys_exec() não retorna até que o script php saia, então o gatilho AFTER não pode ser concluído, portanto você também não pode confirmar o INSERT.

Isso é por design. Afinal, você pode fazer mais operações dentro da mesma transação ou pode reverter a transação. Esse é o problema de invocar processos externos de um gatilho:processos externos não podem ver dados dentro do escopo da transação no banco de dados.

Você não deve fazer esta tarefa com um gatilho. Na melhor das hipóteses, você deve usar o gatilho para definir uma coluna "flag" e, em seguida, escrever um processo externo para procurar linhas com o sinalizador definido e, em seguida, invocar esse script PHP. Dessa forma, apenas as linhas que foram inseridas e confirmadas com sucesso serão processadas.