2015-09-06 187 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到一個存儲過程我寫呈現出繼續處理與循環做一個標誌,指定。