MySQL中觸發器簡介
MySQL中觸發器是一種特殊的存儲過程,當特定的INSERT、UPDATE或DELETE操作發生在表或視圖上時,觸發器會被自動執行,執行的結果是通知數據庫管理系統執行另一組指定的SQL語句。
MySQL中update操作傳值的問題
當使用觸發器進行update操作時,傳值的問題是很重要的。在MySQL中,update操作可以在WHERE子句中使用OLD和NEW關鍵字來引用舊值和新值。在觸發器中,我們可以使用這些關鍵字將值傳遞給其他存儲過程或函數。
使用OLD關鍵字
當我們使用OLD關鍵字時,我們可以引用更新前的值。在以下示例中,我們將更新students表中的score列,然后使用OLD關鍵字將舊值傳遞給存儲過程:
CREATE TRIGGER trigger_name AFTER UPDATE ON students FOR EACH ROW BEGIN DECLARE old_value INT; SET old_value = OLD.score; CALL procedure(old_value); END
使用NEW關鍵字
當我們使用NEW關鍵字時,我們可以引用更新后的值。在以下示例中,我們將更改students表中的score列,并使用NEW關鍵字將新值傳遞給存儲過程:
CREATE TRIGGER trigger_name AFTER UPDATE ON students FOR EACH ROW BEGIN DECLARE new_value INT; SET new_value = NEW.score; CALL procedure(new_value); END
使用OLD和NEW關鍵字
在一些特殊情況下,我們可能需要引用更新前的值和更新后的值。在這種情況下,我們可以使用OLD和NEW關鍵字。以下示例演示如何將舊值和新值傳遞給存儲過程:
CREATE TRIGGER trigger_name AFTER UPDATE ON students FOR EACH ROW BEGIN DECLARE old_value INT; DECLARE new_value INT; SET old_value = OLD.score; SET new_value = NEW.score; CALL procedure(old_value, new_value); END
總結
在MySQL中使用觸發器進行update操作時,傳值是必須的。我們可以使用OLD和NEW關鍵字引用更新前和更新后的值,并將值傳遞給其他存儲過程或函數。需要注意的是,我們應該理解這些關鍵字在哪些情況下使用。
上一篇ie8css失效
下一篇ie9 css3 圓角