Это мой стол «сотрудники»:
+----------------+--------------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+-------------------+-------+
| employeeNumber | int(11) | NO | PRI | NULL | |
| lastName | varchar(50) | NO | | NULL | |
| firstName | varchar(50) | NO | | NULL | |
| extension | varchar(10) | NO | | NULL | |
| email | varchar(100) | NO | | NULL | |
| officeCode | varchar(10) | NO | | NULL | |
| reportsTo | int(11) | YES | | NULL | |
| jobTitle | varchar(50) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| lastUpdate | timestamp | NO | | CURRENT_TIMESTAMP | |
+----------------+--------------+------+-----+-------------------+-------+
Я начинаю изучать триггеры в MySQL.
Идея в том, что когда я обновляю сотрудника, я хочу установить текущее время в lastUpdate.
Поэтому я попытался сделать простое:
DELIMITER $$
CREATE TRIGGER lastUpdate_employee
BEFORE UPDATE
ON employees FOR EACH ROW
BEGIN
SET new.lastUpdate = CURRENT_TIMESTAMP;
END;
$$
DELIMITER ;
Я могу создать триггер без ошибок, но когда я пытаюсь обновить сотрудников, он выдает ошибку:
ERROR 1442 (HY000): Can't update table 'employees' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Я также не знаю, следует ли мне использовать ПОСЛЕ ОБНОВЛЕНИЯ или ПЕРЕД ОБНОВЛЕНИЕМ.
Извините, если это основная ошибка, но я не знаю, как ее решить.
Спасибо.