2013-07-16 37 views
1

我想我的mysql表中的一行總是等於另外兩個的差異,但唯一的方法我似乎能夠做到這一點是通過將它第一次設置爲0,然後運行更新命令。無論如何只是自動化這種行爲,所以我從來沒有想過它?欣賞建議!如何自動設置一個mysql列等於另一個操作?

回答

5

您可能想要使用triggers進行調查,它們被設置爲在另一個數據庫對象上發生特定操作時運行。例如,

CREATE TRIGGER foobar AFTER UPDATE ON table 
    FOR EACH ROW SET foo = foo + NEW.bar; 
+2

+1,許多數據庫提供計算列,但MySQL不是其中之一。觸發器可能是您唯一的選擇。 –

+0

這看起來像一個非常有效的解決方案,謝謝! – stmfunk

0

你也可以用一個視圖做到這一點:

create vw_table as 
    select t.*, (col2 - col1) as diff 
    from t; 

視圖,然後會做計算的時候才使用,這樣的成績始終保持最新。您不需要將數據存儲在單獨的列中。

缺點是你不能在結果上創建一列(在MySQL中)。爲此,您需要一個單獨的列,按照Gian的描述進行維護。

0

這是什麼用例?

爲了數據庫的完整性,您希望在出現錯誤時避免使用相關值。這是我一開始並沒有看到這個問題的那些東西之一,但在清理之後有一點要尊重。

如果你確定它是你想要的,並且你可以使用觸發器在任何時候更新這個更新。

相關問題