【问题标题】:MySQL trigger not working properlyMySQL 触发器无法正常工作
【发布时间】:2015-12-02 04:21:02
【问题描述】:

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

并且在插入到表“新闻”之前被调用。

发生的情况是语法是正确的,但是当我尝试运行它时触发事件,它显示“#1329 - 无数据 - 获取、选择或处理零行”。

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

有 3 个表对此触发器感兴趣。 “新闻”是触发事件的消息;它有一些使用关键字“NEW”调用的列。第二个是收件箱;在触发器执行其操作后,我将在该表中插入一些值。最后是“Listastudenticorsi”,大致意思是“学生和课程列表”。

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

【问题讨论】:

    标签: mysql triggers phpmyadmin xampp


    【解决方案1】:

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

    来自 mysql Cursor 手册页,请参阅this

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 2012-02-25
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      • 2017-08-04
      相关资源
      最近更新 更多