2013-08-22 30 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 ;