Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyzwalacze MySQL - PO WSTAWIENIU wyzwalacza + problem z UDF sys_exec()

Nawet jeśli używasz wyzwalacza AFTER, wiersz nie jest jeszcze zatwierdzony. Ale sys_exec() nie zwraca, dopóki skrypt php nie zostanie zamknięty, więc wyzwalacz AFTER nie może się zakończyć, dlatego też nie możesz zatwierdzić INSERT.

To jest zgodne z projektem. W końcu możesz wykonać więcej operacji w ramach tej samej transakcji lub możesz wycofać transakcję. Na tym polega problem z wywoływaniem procesów zewnętrznych z wyzwalacza:procesy zewnętrzne nie widzą danych w zakresie transakcji w bazie danych.

Nie powinieneś wykonywać tego zadania z wyzwalaczem. W najlepszym przypadku powinieneś użyć wyzwalacza, aby ustawić kolumnę „flag”, a następnie napisać zewnętrzny proces, aby wyszukać wiersze z ustawioną flagą, a następnie wywołać ten skrypt PHP. W ten sposób zostaną przetworzone tylko wiersze, które zostały pomyślnie wstawione ORAZ zatwierdzone.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqli - Czy naprawdę muszę zrobić $result->close(); &$mysqli->zamknij();?

  2. Zmień nazwę tabeli Amazon RDS na wielką literę powoduje błąd

  3. PHP i mySQL:Prosty kod do implementacji transakcji - Commit &Rollback

  4. Czy złącze MySQL/JDBC jest bezpieczne?

  5. SQL - Konwertuj format daty i godziny