MySQL 触发器无法正常工作

MySQL trigger not working properly

我在尝试使用 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

并在插入 table 'News' 之前被调用。

语法是正确的,但是当我尝试 运行 它触发事件时它说“#1329 - 无数据 - 零行获取、selected 或处理".

我试图找出真正的问题是什么,似乎是那行"FETCH sw INTO stud";我尝试了很多次,SELECT 语句确实 return 了正确的值,所以 'sw' 不能为空...我被困在这一点上了。

有 3 table 人对此触发器感兴趣。 'News'是触发事件的那个;它有一些使用关键字 "NEW" 调用的列。第二个是收件箱;它是 table,我将在触发器执行其操作后插入一些值。最后,还有 "Listastudenticorsi",这意味着大约 "list of students and courses"。

我做的是:当插入新闻时,我得到它所指的课程、它的对象、日期和新闻的提交者,我找到(使用 select 语句)学生谁参加了新闻所指的课程,然后使用插入语句向他们每个人发送邮件。

正如我所见,您没有针对游标的继续处理程序。它将允许该光标实际执行某些操作。

从 mysql Cursor 手册页,参见 this

这也是我写的一个存储过程的 link,它显示了一个继续处理程序,其中有一个标志指定循环完成。