2013-08-22 79 views
0

我正在嘗試編寫一個MySQL觸發器。我有一個看起來像這樣的兩個表:如何在MySQL觸發器中構造這個IF條件

tables

當客戶購買一個新的記錄添加到每個表。我在表B中添加了'sku_copy'列,所以在創建新記錄時它不會被填充。

創建新記錄時,我希望觸發器將表A中的'sku'字段複製到表B中的'sku_copy'字段。但是,我遇到的問題是如何在觸發。

IF:在表B中THEN表A匹配「的order_id」「的order_id」:從表到與匹配於表B中的記錄中的一個記錄「ORDER_ID」複製「SKU」。數據應該添加到表B'sku_copy'中。

ELSE:什麼也不做。

有人能告訴我該怎麼寫了我的觸發器?

感謝所有幫助你可以給。

+1

MySQL的<> SQL-Server中。 –

+0

您確定要*製作這樣的副本嗎?在兩個地方使用相同的數據可能會產生問題(例如,如果您更新了一個數據庫,則必須確保更新其他數據)。只要您需要選擇符合給定訂單#的SKU,就可以更簡單地進行加入。 –

+0

嗨羅素 - 感謝您的迴應。我需要在表B中有'sku',以便它可以被另一個應用程序使用。這是銷售記錄,因此唯一的更新將在不再需要時進行刪除。 – tk748

回答

0

嘗試這一點,但爲什麼ü想使用觸發這個的?

DELIMITER $$ 
    CREATE TRIGGER trigger_name 
     AFTER INSERT ON tableA 
     FOR EACH ROW BEGIN 

     INSERT INTO tableB 
     SET sku_copy = OLD.sku, 
      order_id = OLD.order_id, 
      order = OLD.order; 

    END$$ 
    DELIMITER ; 
+0

謝謝 - 我想用觸發器將Sku加入到表B中,因爲我需要找人破解第三方程序來完成此觸發器的功能。此外,我目前的知識水平更好地支持該解決方案,改變其他程序中的代碼。 – tk748

+0

有關糾正錯誤的建議嗎? – tk748

+0

當我運行觸發器時,出現以下錯誤消息:#1363 - INSERT觸發器中沒有舊行 – tk748

0

我想發佈在這裏和另一個論壇上提供的示例構建的觸發器。感謝所有幫助過這個的人。

DELIMITER $$ 

    CREATE TRIGGER sku_AfterInsert 
    AFTER INSERT ON uau3h_virtuemart_order_items 
    FOR EACH ROW BEGIN 

    UPDATE uau3h_virtuemart_orders 
    SET order_item_sku_copy = NEW.order_item_sku 
    WHERE virtuemart_order_id = NEW.virtuemart_order_id; 
    END$$; 

DELIMITER ;