为了实现某条数据的number字段为0时自动删除该条数据,为product_sell表创建如下的触发器:
-------------------------------------------------------------------------------------------------------------------
CREATE TRIGGER number_check AFTER UPDATE ON product_sell
FOR EACH ROW
BEGIN
IF NEW.number=0 THEN DELETE FROM product_sell WHERE OLD.id=NEW.id;
END IF
END
-------------------------------------------------------------------------------------------------------------------
测试一下,执行下面的语句:
-------------------------------------------------------------------------------------------------------------------
UPDATE product_sell SET number=0 WHERE id='df31d0ed-1ecf-496e-996b-8840d834f170';
-------------------------------------------------------------------------------------------------------------------
结果该条数据number变为0,但并没有被删除,同时出现如下错误:
-------------------------------------------------------------------------------------------------------------------
Can't update table 'product_sell' in stored function/trigger because it is already used by statement
which invoked this stored function/trigger.
-------------------------------------------------------------------------------------------------------------------
Google上述错误后得到的信息是在触发器中使用UPDATE语句导致,但是我触发器中并没有执行UPDATE,另有人说使触发器被触发的对象(上文中product_sell表中数据的更新)和触发器执行时的目标(删除product_sell中number为0的数据)不能为同一张表。
小弟现在比较迷惑,求大神指条明路,先谢谢了。
-------------------------------------------------------------------------------------------------------------------
CREATE TRIGGER number_check AFTER UPDATE ON product_sell
FOR EACH ROW
BEGIN
IF NEW.number=0 THEN DELETE FROM product_sell WHERE OLD.id=NEW.id;
END IF
END
-------------------------------------------------------------------------------------------------------------------
测试一下,执行下面的语句:
-------------------------------------------------------------------------------------------------------------------
UPDATE product_sell SET number=0 WHERE id='df31d0ed-1ecf-496e-996b-8840d834f170';
-------------------------------------------------------------------------------------------------------------------
结果该条数据number变为0,但并没有被删除,同时出现如下错误:
-------------------------------------------------------------------------------------------------------------------
Can't update table 'product_sell' in stored function/trigger because it is already used by statement
which invoked this stored function/trigger.
-------------------------------------------------------------------------------------------------------------------
Google上述错误后得到的信息是在触发器中使用UPDATE语句导致,但是我触发器中并没有执行UPDATE,另有人说使触发器被触发的对象(上文中product_sell表中数据的更新)和触发器执行时的目标(删除product_sell中number为0的数据)不能为同一张表。
小弟现在比较迷惑,求大神指条明路,先谢谢了。