2015-12-30 73 views
0

我有一些問題,在更新同一張表的另一列後,試圖更新表的一個字段。 我知道我不能在我更新的同一張桌子上執行觸發器,但我需要找到一個辦法來做到這一點。MySQL更新觸發器在同一張桌上

例如,我的表是:

更新 age
ParentName | Age | Update_date 

John   12 2014-12-01 
Eric   23 2014-4-01 
Jack   32 2014-5-01 
Jill   33 2014-2-01 

,我需要更新update_date,我在我的真實情況,我不能直接從更新查詢做到這一點,因爲我想這個規則工作不依賴於我如何更新表格。

我試圖用存儲過程做到這一點,但我不太瞭解它們。

有人有任何想法或可以解釋我如何使用tored過程來做到這一點?

+0

您可以更新觸發前使用,如果舊的日期不等於新的日期,然後設置'Update_date'爲'CURDATE()' –

+0

與before_update觸發它給了我這個錯誤: 無法更新表'parent_table'在已存儲的函數/觸發器中,因爲它已經被調用此存儲函數的觸發器使用/觸發器 –

+0

您可以更改表的結構。將CURRENT_DATE ON UPDATE置於默認值。每當你的行更新時,它的值將會隨着當前日期而改變。通過這種方式,沒有觸發器的要求,以及更新查詢 –

回答

0

你觸發可能是這樣的:

DELIMITER // 

CREATE TRIGGER persons_updt BEFORE UPDATE ON persons 
FOR EACH ROW 
    IF (NEW.age <=> OLD.age) THEN SET NEW.Update_date=current_date(); 
END IF// 

DELIMITER ; 

這裏我使用了。請看小提琴here