2

给定错误:#1436 - 线程堆栈溢出:131072 字节堆栈使用了 6024 字节,需要 128000 字节。使用 'mysqld -O thread_stack=#' 指定更大的堆栈。

DROP TRIGGER IF EXISTS `After_delete_area_package`;
DELIMITER //
CREATE TRIGGER `After_delete_area_package` AFTER DELETE ON `area_package`
FOR EACH ROW BEGIN    
DELETE FROM accounts_areas
WHERE (area_id = 1); 
END
//
DELIMITER ;

我猜很简单。表 accounts_areas 中唯一的 area_id 是 1
在此之前我尝试过 old.package_area_id

我没有外键限制,我的开销在设置为 28B 的 phpMyAdmin 中变为红色。

RDMS:myISAM

SQLFIDDLE:http ://sqlfiddle.com/#!2/79a41

问题:为什么我的触发器不会从 account_areas where area_id = 1 中删除所有行

4

1 回答 1

0

你可能会错过一个END吗?

DROP TRIGGER IF EXISTS After_delete_area_package;

DELIMITER $$
CREATE TRIGGER After_delete_area_package AFTER DELETE ON area_package
FOR EACH ROW
BEGIN
DELETE FROM accounts_areas
    WHERE area_id = 1;
END$$
DELIMITER;

编辑 1

由于您正在恢复thread_stack错误,因此解决方案是增加堆栈大小。

于 2012-10-16T15:14:37.780 回答