mysql触发器为什么不能用new关键字

DELIMITER $$

CREATE
TRIGGER mm5.insert_2
BEFORE INSERT ON mm5.st_question
FOR EACH ROW
BEGIN
IF NEW.course_id IS NULL THEN
SELECT course_id INTO NEW.course_id FROM st_catalog WHERE id = NEW.catalog_id;
END IF;
END$$

DELIMITER ;

报错
1 queries executed, 0 success, 1 errors, 0 warnings

查询:CREATE TRIGGER mm5.insert_2 BEFORE INSERT ON mm5.st_question FOR EACH ROW BEGIN IF NEW.course_id IS NULL THEN SELECT cou...

错误代码: 1327
Undeclared variable: NEW

img

你是不是其他哪里有问题,直接写一个最简单的试试看?你这个地方应该是into 一个变量,而不是new.xx,改成下边这样试试?

img

DELIMITER $$
CREATE TRIGGER mm5.insert_2 BEFORE INSERT ON mm5.st_question FOR EACH ROW 
BEGIN
    DECLARE course_id INT;
    IF NEW.course_id IS NULL THEN
        SELECT catalog_id INTO course_id FROM st_catalog WHERE id = NEW.catalog_id;
        SET NEW.course_id = course_id;
    END IF;
END$$
DELIMITER ;
CREATE TRIGGER trigger_name BEFORE UPDATE ON student FOR EACH ROW
BEGIN
    IF NEW.name IS NULL THEN
        SET NEW.name = '张三';
    END IF;
END;