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

Wyzwalacz MySQL nie działa, prosta składnia, nieskomplikowana

Przechowywana funkcja lub wyzwalacz nie może modyfikować tabeli, która jest już używana (do odczytu lub zapisu) przez instrukcję, która wywołała funkcję lub wyzwalacz.

od:Ograniczenia programów przechowywanych .

Generalnie w przypadku wyzwalacza, który jest uruchamiany podczas wstawiania, jeśli chcesz zmienić wstawianą wartość, należy wykonać wyzwalacz typu BEFORE INSERT i zmień wartości w NEW

zauważyłem również, że poniższe stwierdzenie i tak nie jest tym, czego chcesz.

update pos_table set PTS=((NEW.won_games*2)+(NEW.tie_games*1));

Aktualizuje całą tabelę, podczas gdy myślę, że próbujesz zaktualizować tylko określony wiersz. W każdym razie jest to proste obliczenie, więc tak naprawdę nie musisz przechowywać tej kolumny. Możesz równie łatwo obliczyć wartość w czasie wyświetlania i znacznie uprościć swój kod + uniknąć problemu z wyzwalaczem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Samouczek MySQL — zarządzanie dziennikami serwera MySQL:obracanie, kompresowanie, przechowywanie i usuwanie

  2. Czy mogę użyć funkcji dla wartości domyślnej w MySql?

  3. WEEKDAY() Przykłady – MySQL

  4. MySQL — odejmowanie wartości od poprzedniego wiersza, grupowanie według

  5. Znajdź zduplikowane rekordy w MySQL