2013-10-17 41 views
0

我試圖設置一個觸發器,它將在填充wp_meta時更新另一個表(客戶)。所以,基本上,當數據被添加到wp_meta時,我希望更新我的customers表中的某些字段。例如,當first_namelast_name更新爲wp_meta時,我想用first_namelast_name更新相同的信息。使用mysql中另一個表中的類似數據更新新數據庫表的語法

這是我到目前爲止有:

CREATE TRIGGER update_customers AFTER UPDATE ON wp_usermeta 
    FOR EACH ROW 
    BEGIN 
    customers.first_name = wp_meta.first_name; 
    END   

我不斷收到一個語法錯誤,我想知道我在做什麼錯。我還將分隔符設置爲//

另一個問題是數據庫wp_meta基於鍵/值系統。所以你有wp_meta.metakey和一個相關的wp_metavalue。我「迷路瞭如何從密鑰中獲得的價值。

+0

您是否閱讀過手冊(http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html)? – TheWolf

+0

是的,我仍然迷路。 – BlackHatSamurai

+1

在2個表中有相同的數據,就像這樣聽起來像設計不佳 – 2013-10-17 22:09:47

回答

1

也許這樣的事情?

CREATE TRIGGER update_customers AFTER UPDATE ON wp_usermeta 
    FOR EACH ROW 
    BEGIN 
    update customers set customers.first_name = new.first_name where customers.id=new.id; 
    END  

(未測試...)

1

從約什答案是一個良好的開端。但是,我會添加(1)您的觸發器定義失敗的原因是「BEGIN」和「END」關鍵字之間的SQL不是有效的SQL語句,並且(2)您還需要爲AFTER創建觸發器INSERT事件,否則只有在更新wp_userdata表時纔會獲取客戶數據,而不是最初插入記錄時的數據:

CREATE TRIGGER trig_wp_usermeta_after_update AFTER UPDATE ON wp_usermeta 
    FOR EACH ROW 
    BEGIN 
    update customers set customers.first_name = new.first_name where customers.id=new.id; 
    END; 

CREATE TRIGGER trig_wp_usermeta_after_insert AFTER INSERT ON wp_usermeta 
    FOR EACH ROW 
    BEGIN 
    update customers set customers.first_name = new.first_name where customers.id=new.id; 
    END; 
相關問題