在創建下面的觸發器之後,當我嘗試執行更新時,出現錯誤(在代碼後詳述)。無論我走哪條路,我似乎都無法更新表格。我是否必須創建一個新表格並在其中添加一列用於更新,或者有解決方法嗎? This page說:「在存儲的函數或觸發器中,不允許修改調用該函數或觸發器的語句已在使用(用於讀取或寫入)的表。」但是,NEW和OLD關鍵字有什麼意義?我只是不正確地使用它們嗎?mySQL觸發器無法更新調用觸發器的語句已在使用的表
表:像冊
列:重量,改性劑,評級
觸發:updateRating
CREATE TRIGGER updateRating
BEFORE UPDATE ON gallery
FOR EACH ROW
UPDATE gallery SET rating= sum(NEW.weight * NEW.modifier)
或
CREATE TRIGGER updateRating
AFTER UPDATE ON gallery
FOR EACH ROW
UPDATE gallery SET rating= sum(weight * modifier)
SQL查詢:編輯
UPDATE`acs`.`gallery` SET`weight` = '6' WHERE`gallery`.`id` = 1 LIMIT 1
MySQL表示:文件
#1442 - 無法更新在存儲函數/觸發器中的表'庫',因爲它已經被調用該存儲函數/觸發器的語句使用。
不得不刪除BEGIN/END關鍵字,因爲只有一個語句要運行(目前),但是這很有效。感謝您澄清我可以改變NEW.rating,但不僅僅是直接在桌上進行評分。你是對的,我可以使用一個即時的SELECT語句。儘管如此,我還是想在其他方面加入其他內容,所以這就是爲什麼我想弄明白。 – SimonDever