MySQL 触发器无法正常工作

标签 mysql triggers phpmyadmin xampp

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

相关文章:

php - 我怎样才能在我的 php 服务器上获得我的系统时区

php - 投票按钮的数据库设计

WPF在动画结束时触发命令

mysql - phpMyAdmin Magento 价格更新

mysql - m #1064 - 你的 SQL 语法有错误我是 SQL 的新手

mysql - 无法使用 PHPMyAdmin 导入数据库

mysql - 如何使用SQL编辑mysql数据库中某列的多条记录

mysql - laravel 之类的查询不起作用?

SQL Server 更新后触发器不工作

MySQL:更新前触发不起作用