问题说明:
CREATE TRIGGER hello_log_update
AFTER update ON `hello`
FOR EACH ROW
BEGIN
DECLARE s1 VARCHAR(40) CHARACTER SET utf8;
DECLARE s2 VARCHAR(20) CHARACTER SET utf8;
SET s2 = 'is updated';
SET s1 = CONCAT(NEW.id, s2);
INSERT INTO logs(log) VALUES (s1);
END;
创建上面这段触发器的时候,会报错,原因是在begin里面就有了分号的出现,会导致编译器不知道在哪结束。
问题解决:
将这一段代码用 DELIMITER // 和 // DELIMITER 进行修饰,告知编译器,这是一个语句。
begin 和 end 里面的语句是具有原子性的奥!!
DELIMITER //
CREATE TRIGGER hello_log_update
AFTER update ON `hello`
FOR EACH ROW
BEGIN
DECLARE s1 VARCHAR(40) CHARACTER SET utf8;
DECLARE s2 VARCHAR(20) CHARACTER SET utf8;
SET s2 = 'is updated';
SET s1 = CONCAT(NEW.id, s2);
INSERT INTO logs(log) VALUES (s1);
END;
//
DELIMITER ;