0

我目前开始在我的数据库结构中使用触发器。我必须表 - 我们称他们为父母和孩子。在插入 cild 表后调用触发器。插入语句是

INSERT IGNORE INTO child (parent_id)
SELECT
    id
FROM parent
WHERE somecondition = 1

子表的after-insert触发器中的语句为:

UPDATE parent SET derivate_count = derivate_count + 1;

父表在更新或其他方面没有触发器,我收到错误:SQL Fehler (1442): Can't update table 'parent' in stored function/trigger 因为它已被调用此存储函数/触发器的语句使用.

如果我在父表上强制执行相同的事件,我会理解是否会发生此错误 - 如何解决?

亲切的问候,

多米尼克

4

1 回答 1

0

使用 OLD.fieldName 和 NEW.fieldName 分别引用更新前后的值...

delimiter |

CREATE TRIGGER testref AFTER UPDATE ON parent
  FOR EACH ROW BEGIN
   declare count_ integer;
   select count(*) into count_ from child where parent_id = NEW.id;
    if (if count_ = 0)
       then 
          INSERT INTO child ( parent_id ) values (NEW.id );
          delete from child where parent_id = OLD.id;
          ... more code ...
       else
          ... more code ....
          ... else is optional, but an end to end the if is not.... 
       end if;
  END;
|

delimiter ;
于 2013-07-04T07:54:30.480 回答