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