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,它显示了一个继续处理程序,其中有一个标志指定循环完成。
我在尝试使用 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,它显示了一个继续处理程序,其中有一个标志指定循环完成。