我在尝试使用 MySQL 触发器时遇到奇怪的错误。 我正在使用 XAMPP 并使用 PhpMyAdmin 创建触发器。
触发器的代码是:
BEGIN
DECLARE stud INT(11) DEFAULT 0;
DECLARE sw CURSOR FOR
(SELECT CodiceStudente FROM Listastudenticorsi WHERE CodiceCorso = NEW.CodiceCorso);
OPEN sw;
get_loop: LOOP
FETCH sw INTO stud;
INSERT INTO inbox(Mittente, Destinatario, Oggetto, Contenuto, Data) VALUES (NEW.CodiceDocente, stud, "Nuova news inserita", NEW.Oggetto, NEW.Data);
END LOOP get_loop;
END
并且在 INSERT 到“新闻”表之前调用。
发生的情况是语法是正确的,但是当我尝试运行它触发事件时,它显示“#1329 - 无数据 - 提取、选择或处理零行”。
我试图找出真正的问题是什么,它似乎是“FETCH sw INTO Stud”行;我尝试了很多次,SELECT 语句确实返回了正确的值,因此 'sw' 不能为空...我陷入了这一点。
有 3 个表对此触发器感兴趣。 “新闻”是触发事件的事件;它有一些使用关键字“NEW”调用的列。第二个是收件箱;在触发器执行其操作后,我将在该表中插入一些值。最后,还有“Listastudenticorsi”,大致意思是“学生和类(class)列表”。
我所做的是:当插入新闻时,我获取它所引用的类(class)、其对象、日期和新闻的提交者,我找到(使用 select 语句)参加该类(class)的学生新闻是指,然后使用插入语句向每个人发送一封邮件。
最佳答案
据我所知,您没有光标的继续处理程序。它将允许该光标实际执行某些操作。
从 mysql Cursor
手册页,参见 this .
这也是一个link我编写的存储过程显示了一个带有指定循环完成标志的继续处理程序。
关于MySQL 触发器无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32424638/