2012-11-23 130 views
2

我知道有這種說法ON UPDATE,有沒有一種方法可以用它在我的數據庫中創建一個列,當這個值改變時,另一個預定義的值被設置爲0? 在此先感謝。當值更新時更改值

例:

id | value | type 
1  2  5 
2  4  6 
3  7  8 

如果我更新的第一行的價值,我想類型automaticaly設置爲0。

+0

我不知道有這個問題。請提供示例輸入和預期結果以及相關示例數據 – ariefbayu

+0

您可以在更新後使用SQL的觸發器功能,將每個新的行集類型歸零。 – Jivan

回答

2

您需要創建獲取每次行被更改執行的觸發,例如:

CREATE TRIGGER auto_update_type BEFORE UPDATE 
ON your_table_name 
FOR EACH ROW BEGIN 

    if NEW.value <> OLD.value THEN 
     SET NEW.type = 0; 
    END IF; 
END; 

這之後,每次你做查詢:

UPDATE table_name SET value = '10' WHERE id = 1; 

如果值是不同的,舊的一個,觸發將被執行和類型將被設置爲0

下面是如何從phpMyAdmin的設置觸發:

enter image description here

0

一個解決方案,你可以這樣做只是用PHP的幫助碼。

首先,只要你的更新函數/動作被觸發,那麼也要更新類型值。

+0

好吧,所以沒有SQL方法來做到這一點...? – Weacked

+0

也可能在sql中,即在更新第一個值時也會將類型更新爲0 – Suleman

0

刪除您的PHP腳本中的所有對insert,updatedelete的訪問。只需使用存儲過程。這樣數據庫可以照顧自己並保持自己的一致性。

相關問題