ну, я понял, что ты делаешь неправильно.См. Выполнение ниже:
mysql> CREATE TABLE employees_audit (
-> id int(11) NOT NULL AUTO_INCREMENT,
-> employeeNumber int(11) NOT NULL,
-> lastname varchar(50) NOT NULL,
-> changedon datetime DEFAULT NULL,
-> action varchar(50) DEFAULT NULL,
-> PRIMARY KEY (id)
-> )
->
-> DELIMITER $$
-> CREATE TRIGGER before_employee_update
-> BEFORE UPDATE ON employees
-> FOR EACH ROW BEGIN
-> INSERT INTO employees_audit
-> SET action = 'update',
-> employeeNumber = OLD.employeeNumber,
-> lastname = OLD.lastname,
-> changedon = NOW(); END$$
ОШИБКА 1064 (42000): в синтаксисе SQL имеется ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом с DELIM ITER $$
RANG A BELL?СМОТРИТЕ ПОХОЖИЕ?
Дружище, ты (скорее всего) забыл поставить ;
в конце директивы create table .Приведенный ниже код работает:
mysql>
mysql> CREATE TABLE employees_audit (
-> id int(11) NOT NULL AUTO_INCREMENT,
-> employeeNumber int(11) NOT NULL,
-> lastname varchar(50) NOT NULL,
-> changedon datetime DEFAULT NULL,
-> action varchar(50) DEFAULT NULL,
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (0.09 sec)
mysql>
mysql> DELIMITER $$
mysql> CREATE TRIGGER before_employee_update
-> BEFORE UPDATE ON employees
-> FOR EACH ROW BEGIN
-> INSERT INTO employees_audit
-> SET action = 'update',
-> employeeNumber = OLD.employeeNumber,
-> lastname = OLD.lastname,
-> changedon = NOW(); END$$
Query OK, 0 rows affected (0.01 sec)
mysql> DELIMITER ;
СТАРЫЙ ОТВЕТ
попробуйте это
DELIMITER $$
CREATE TRIGGER before_employee_update BEFORE UPDATE ON employees
FOR EACH ROW
BEGIN
INSERT INTO employees_audit
SET action = 'update',
employeeNumber = OLD.employeeNumber,
lastname = OLD.lastname,
changedon = NOW();
END;$$
DELIMITER ;
отсутствует ;
послеEND
, я думаю,
Редактировать : исправлено:
Редактировать1 : повторный ответ.