我现在开始在我的db-structure中使用触发器。 我必须把桌子 - 我们称之为父母和孩子。 在插入cild表后调用触发器。 insert-Statement是
INSERT IGNORE INTO child (parent_id)
SELECT
id
FROM parent
WHERE somecondition = 1
子表的插入后触发器中的语句是:
UPDATE parent SET derivate_count = derivate_count + 1;
父表没有触发更新或其他东西,我收到错误: SQL Fehler(1442):无法更新存储函数/触发器中的表'parent',因为它已被调用此存储函数/触发器的语句使用。
如果我在父表上强制执行相同的事件,我会理解是否会发生此错误 - 如何解决?
亲切的问候,
多米尼克
答案 0 :(得分: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 ;