我有一个删除单个post
的功能,它可以正常工作。
但是当我必须删除多个帖子时(有一些场景,当我必须一起删除多个帖子时)我在查询中调用该函数,如
SELECT fn_delete_post(id) FROM posts WHERE ...
但是我收到了这个错误:
无法更新表格'帖子'在存储的函数/触发器中因为它 已经被调用此存储函数/触发器的语句使用。
功能:
CREATE FUNCTION `fn_delete_post`(post_id INT) RETURNS int(1)
BEGIN
UPDATE posts SET status = 'DELETED' WHERE id = post_id;
UPDATE table1 SET `status` = 'DELETED' WHERE ...
UPDATE table2 SET `status` = 'DELETED' WHERE ...
UPDATE table3 SET `status` = 'DELETED' WHERE ...
RETURN 1;
END;
我知道这个错误意味着什么,我只是想不出如何改变我的逻辑,因为我为不同的实体创建了许多函数以实现可重用性。我还有一个delete comment
,我在post delete function
(未在此处显示)中调用
PS:我编辑了代码只是为了展示我的情景。实际的功能代码要复杂得多,还要做很多其他事情。对于同一错误还有其他问题,但都有不同的情况。