SQL 触发器 - 有一个会搞乱新的 SQL 查询

SQL Trigger - Having one is messing up new SQL queries

我可以手动执行以下代码:

UPDATE pfields_cont p, members m
   SET m.member_group_id = 6
 WHERE p.member_id = m.member_id
   AND m.member_group_id != 6
   AND p.field_2 = 'Teacher';

但是,如果我尝试使用与上面相同的代码创建触发器,在我的数据库中创建新用户时会出现此错误:

Can't update table 'members' in stored function/trigger because it is already used by statement which invoked this stored function/trigger (1442)

有人可以帮忙修复触发器吗?

谢谢!

编辑 1:

完整的触发器定义:

CREATE TRIGGER `newTeacher` AFTER INSERT ON `members` FOR EACH ROW UPDATE
    pfields_cont p,
    members m
SET
    m.member_group_id = 6
WHERE
    p.member_id = m.member_id
    AND m.member_group_id != 6
    AND p.field_2 = 'Teacher'

由于您不能在触发器的定义中引用相同的 table(用于读取或写入),如果 [=12=,则可以根据将 member_group_id 设置为 6 来简化触发器处理] 是 Teacher:

CREATE TRIGGER `newTeacher` BEFORE INSERT ON `members`
FOR EACH ROW UPDATE
BEGIN
    Declare fieldInfo varchar(30);

    SELECT field_2 INTO fieldInfo 
      FROM pfields_cont 
     WHERE pfields_cont.member_id = NEW.member_ID;

    IF fieldInfo = 'Teacher' THEN
        SET NEW.member_group_id = 6;
    END IF;
END;