OLD
и NEW
- это псевдонимы строк, которые запускают триггер. Поэтому, когда вы выполняете оператор, как
UPDATE cars SET status='xyz' WHERE cars.id = 42;
, тогда запускается функция триггера
UPDATE hello_cars SET status='xyz' WHERE 42 = 42
Часть 42=42
всегда верна. Таким образом, каждая строка в hello_cars
обновляется.
Вы действительно хотите что-то вроде
[...]WHERE hello_cars.id = OLD.ID
или немного короче
[...]WHERE id = OLD.ID
Но вам также нужно подумать о том, что произойдет, если начальное обновление изменится cars.id
. В этом случае OLD.ID
не равно NEW.ID
. Что должно произойти в таблице hello_cars
в этом случае? Но это другой вопрос.