MySQL触发器,光标返回错误1442或根本不起作用
我目前正在使用数据库来处理ingame库存。 我在mySQL中编写了一个触发器,每次在表中插入一个新的项目时,都会尝试合并这些项目。每个项目有两个组成部分 我做错了一件事,但我看不出可能是什么。这是我的触发器:MySQL触发器,光标返回错误1442或根本不起作用,mysql,sql,Mysql,Sql,我目前正在使用数据库来处理ingame库存。 我在mySQL中编写了一个触发器,每次在表中插入一个新的项目时,都会尝试合并这些项目。每个项目有两个组成部分 我做错了一件事,但我看不出可能是什么。这是我的触发器: CREATE TRIGGER `onitempickup` AFTER INSERT ON `inventory` FOR EACH ROW BEGIN BEGIN DECLARE done boolean DEFAULT false; DECLARE Item2Combine V
CREATE TRIGGER `onitempickup` AFTER INSERT ON
`inventory` FOR EACH ROW BEGIN
BEGIN
DECLARE done boolean DEFAULT false;
DECLARE Item2Combine VARCHAR(10);
DECLARE MadefromResult1 VARCHAR(10);
DECLARE MadefromResult2 VARCHAR(10);
DECLARE ComboItemName1 VARCHAR(10);
DECLARE ComboItemName2 VARCHAR(10);
DECLARE in_itemname VARCHAR(10);
DECLARE Madefromcheck1Cursor cursor for
SELECT name, madefrom1 FROM item WHERE madefrom2 = in_itemname;
DECLARE Madefromcheck2Cursor cursor for
SELECT name, madefrom2 FROM i``tem WHERE madefrom1 = in_itemname;
DECLARE ItemToCombineCursor cursor for
SELECT Item from inventory;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
SET in_itemname = NEW.Item;
OPEN MadefromCheck1Cursor;
OPEN MadefromCheck2Cursor;
OPEN ItemToCombineCursor;
read_loop: LOOP
FETCH ItemToCombineCursor INTO Item2Combine;
FETCH Madefromcheck1Cursor INTO ComboItemName1, MadefromResult1;
FETCH MadefromCheck2Cursor INTO ComboItemName2, MadefromResult2;
IF done THEN
LEAVE read_loop;
ELSEIF Item2Combine = MadefromResult1 THEN
INSERT INTO Inventory(Item) VALUES(ComboItemName1);
DELETE FROM Inventory WHERE Item = in_itemname;
DELETE FROM Inventory WHERE Item = Item2Combine;
LEAVE read_loop;
ELSEIF Item2Combine = MadefromResult2 THEN INSERT
INTO Inventory(Item) VALUES(ComboItemName2);
DELETE FROM Inventory WHERE Item = in_itemname;
DELETE FROM Inventory WHERE Item = Item2Combine;
LEAVE read_loop;
ELSE
ITERATE read_loop;
END IF;
END LOOP read_loop;
CLOSE Madefromcheck1Cursor;
CLOSE Madefromcheck2Cursor;
CLOSE ItemToCombineCursor;
END
我尝试将其更改为在插入之前执行,但没有效果,因为该过程甚至没有执行。根据这里关于堆栈溢出的许多问题,我目前得到一个错误1442,这意味着我在某个地方有一个无限循环,但我不知道在哪里
谢谢你的帮助。感谢您的关注。您正在处理表上的触发器-这将向该表中插入记录,这可能会导致触发;)哦,孩子。谢谢你的洞察力,在这方面花的时间比我想承认的要多。你把我弄松了!处理表上触发器的过程可能重复-将记录插入该表,这可能会导致触发;)哦,孩子。谢谢你的洞察力,在这方面花的时间比我想承认的要多。你把我弄松了!可能重复的