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

Używanie CONCAT z wyzwalaczami MySQL (błąd w ,)

ZAKTUALIZOWANO:

  1. Wygląda na to, że nie zmieniłeś DELIMITER .
  2. Najprawdopodobniej miałeś na myśli CURRENT_TIMESTAMP zamiast nieistniejącego CURTIMESTAMP()

Mając to na uwadze, poprawna składniowo wersja wyzwalacza może wyglądać tak

DELIMITER $$
CREATE TRIGGER users_update_trigger
AFTER UPDATE ON users 
FOR EACH ROW
BEGIN
  INSERT INTO users_backlog (user_id, description, datetime) VALUES 
  (NEW.user_id, CONCAT('modified from ', OLD.hourly, ' to ', NEW.hourly), CURRENT_TIMESTAMP);
END$$
DELIMITER ;

lub (ponieważ masz tylko jedną instrukcję w wyzwalaczu, możesz pominąć BEGIN ... END blok i DELIMITER ) po prostu

CREATE TRIGGER users_update_trigger
AFTER UPDATE ON users 
FOR EACH ROW
  INSERT INTO users_backlog (user_id, description, datetime) VALUES 
  (NEW.user_id, CONCAT('modified from ', OLD.hourly, ' to ', NEW.hourly), NOW());

Oto SQLFiddle demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. W jakiej kolejności oceniane są JOIN MySQL?

  2. Określ rangę na podstawie wielu kolumn w MySQL

  3. Liczenie niepustych wartości w każdej kolumnie tabeli

  4. Jak udzielić zdalnego dostępu do MySQL dla całej podsieci?

  5. jak zaimplementować skomplikowane polecenie sql