0
1)我有一些表programs
。Mysql:在一个流程中的INSERT过程+触发器
2)我有此表中改变程序:
CREATE PROCEDURE update_lessons_ord (IN courseId INT)
BEGIN
SET @ord :=0;
UPDATE programs mcp_1
INNER JOIN programs mcp_2 ON mcp_1.id = mcp_2.id
SET mcp_1.ord = (@ord := @ord +1)
WHERE mcp_2.course_id = courseId;
END;
3)我必须先TRIGGER(删除):
CREATE TRIGGER `update_lessons_ord_after_delete` AFTER DELETE ON `programs`
FOR EACH ROW
BEGIN
CALL update_lessons_ord(OLD.course_id);
END;
它的工作好!
4)我有第二TRIGGER(插入):
CREATE TRIGGER `update_lessons_ord_after_insert` AFTER INSERT ON `programs`
FOR EACH ROW
BEGIN
CALL update_lessons_ord(NEW.course_id);
END;
它的工作原理错误:“因为它已经使用由调用这个存储声明不能在存储函数/触发更新表功能/触发器“。
如何在这种情况下使用我的程序?
您可以发布存储过程的代码吗? – wchiquito 2014-09-04 15:01:19
@wchiquito张贴。 – 2014-09-04 15:03:14
在这两种情况下都会生成错误,下面是一个[SQL小提琴](http://sqlfiddle.com/#!2/af25ec/2)示例。 – wchiquito 2014-09-04 16:09:42