1
我有兩個(多對一)表。學生和班級表。班級持有活躍學生人數。如果學生狀態發生變化,則觸發減少一個活躍學生列數。 所以,我寫了一個觸發條件如下:控制字符等價觸發MySQL
CREATE TRIGGER decreaseNumOfActiveStudent AFTER UPDATE ON student
FOR EACH ROW
BEGIN
DECLARE OLD_STATUS CHAR(1);
SELECT STATUS INTO OLD_STATUS FROM STUDENT WHERE CLASS_ID = NEW.CLASS_ID;
IF OLD_STATUS = '1' OR OLD_STATUS = 'O' THEN
IF NEW.STATUS = '2' THEN
UPDATE CLASS SET NUM_OF_ACTIVE_STUDENT = NUM_OF_ACTIVE_STUDENT - 1
WHERE CLASS_ID = NEW.CLASS_ID;
ENDIF;
ENDIF;
END;
但是,觸發器不更新類表。我認爲,字符控制可能是錯誤的。我怎麼解決這個問題?
謝謝。
當每個狀態更改請求(狀態0)針對同一個學生ID時,您的觸發器會減少num_of_active_students的1個值。所以,我需要知道舊狀態的價值。 – mcnull
是的,你可以使用'old.status'的東西作爲'new.status ='0'和old.status <>'0'' –
哪些學生的舊地位?我無法看到舊的關鍵字。那麼,你如何使用舊的關鍵字? – mcnull