为了实现某条数据的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的数据)不能为同一张表。
小弟现在比较迷惑,求大神指条明路,先谢谢了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/124119
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.