У меня есть триггер, который работает нормально.Триггер (ПОСЛЕ/ПЕРЕД) В Mysql
CREATE TRIGGER crm_listings__au
AFTER UPDATE
ON crm_listings FOR EACH ROW
INSERT INTO crm_listings_versions
SELECT
'update', NULL, NOW(), NULL, d.*
FROM
crm_listings AS d
WHERE
d.id = NEW.id;
Теперь я также хочу отслеживать имя столбца поля. Я имею в виду, я не мог сделать в приведенном выше запросе, поэтому я изменил ниже спускового
CREATE TRIGGER crm_listings__au
BEFORE UPDATE
ON crm_listings
FOR EACH ROW
BEGIN
IF OLD.type != NEW.type
THEN
INSERT INTO crm_listings_versions
SELECT
'update', NULL, NOW(), 'type', d.*
FROM
crm_listings AS d
WHERE
d.id = NEW.id;
END IF;
IF OLD.price != NEW.price
THEN
INSERT INTO crm_listings_versions
SELECT
'update', NULL, NOW(), 'price', d.*
FROM
crm_listings AS d
WHERE
d.id = NEW.id;
END IF;
END;
$$
Когда я запускаю этот код, я получаю эту ошибку:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 10
UPDATE:
Я следовал за этим разместить на stackoverflow
Единственное, что приходит на ум, что вы изменили 4-й столбец из 'null' в' 'type'' - может быть, четвёртая колонка не 'varchar' колонка ? – radoh
Вы забыли добавить 'DELIMITER $$' в команду' create trigger'. Также не забудьте добавить «DELIMITER;» после этой команды. – krokodilko
@kordirko: Не могли бы вы немного объяснить? – DOE