2015-09-06 150 views
2

尝试使用MySQL触发器时​​出现奇怪的错误。 我正在使用XAMPP并使用PhpMyAdmin创建触发器。MySQL触发器无法正常工作

触发的代码是:

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钉”;我尝试了很多次,并且SELECT语句会返回正确的值,所以'sw'不能为空......我被困在这一点。

有这个触发感兴趣的3个表。 '新闻'是触发事件的那个;它有一些使用关键字“NEW”调用的列。第二个是收件箱;它是在触发器执行完其动作后插入一些值的表格。最后,还有“Listastudenticorsi”,意思是大约“学生和课程列表”。

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

回答

2

您没有继续处理程序游标,因为我看到它。这将允许该光标实际上执行某些操作。

从MySQL Cursor页,请参阅this

这里也是一个link到一个存储过程我写呈现出继续处理与循环做一个标志,指定。