我试图在mysql中创建一个触发器,但不工作

时间:2014-08-19 12:38:49

标签: mysql triggers insert

这是我的触发器:

DELIMITER $$
    CREATE TRIGGER after_changing_student_year
        AFTER UPDATE ON student_details
        FOR EACH ROW 
        BEGIN
               SET @old_stud_id = NEW.student_id;
               INSERT INTO assigned_groups (student_id) VALUES (@old_stud_id);
        END$$
DELIMITER ;

我使用了mysql变量,因为直接赋值不起作用。

但我发现这个有效:

DELIMITER $$
    CREATE TRIGGER after_changing_student_year
        AFTER UPDATE ON student_details
        FOR EACH ROW 
        BEGIN
               INSERT INTO assigned_groups (student_id) VALUES (83);
        END$$
DELIMITER ;

我还发现将assigned_groups中的student_id列重命名为student_id_1会有效,但这不是一个可行的解决方案,因为我必须制作这样的许多触发器。

编辑:对不起,伙伴们,我的PHP代码出了问题。当我直接在mysql中编辑时,触发器正常工作。但是当我通过PHP代码更新它时。可能是什么问题?

1 个答案:

答案 0 :(得分:0)

你可以这样做,我测试了它并且它正在工作:

DELIMITER $$
    CREATE TRIGGER after_changing_student_year
        AFTER UPDATE ON student_details
        FOR EACH ROW 
        BEGIN
          DECLARE old_stud_id INT;
               SET old_stud_id = NEW.student_id;
               INSERT INTO assigned_groups (student_id) VALUES (old_stud_id);
        END$$
DELIMITER ;