使用trigger将新行插入另一个表中的一个表?

时间:2013-02-06 04:57:06

标签: mysql triggers

我有2张桌子

收藏夹表

----------------------------------------------------------------------
| FavouritesID | CompanyID | CustomerID | ProfilePhoto | CompanyName |
----------------------------------------------------------------------
|                                                                    |
|                                                                    |
|                                                                    |
----------------------------------------------------------------------

个人资料表

-------------------------------------------
| CompanyID | CompanyName | ProfilePhoto  |
-------------------------------------------
|      1    | Nike        |http://loca..  |
|      2    | Adidas      |http://loca..  |
|      3    | PaulSmith   |http://loca..  |
-------------------------------------------

我想使用CompanyName

ProfilePhotoCompanyID插入收藏夹表格

因此,当一行插入到收藏夹表中,而公司ID = 1时,CompanyName=Nike 并且ProfilePhoto=htpp://local...将被插入到收藏夹表格,从个人资料表中获取信息。

这是我到目前为止所做的:

CREATE TRIGGER `Favourites` BEFORE INSERT ON `Favourites`
 FOR EACH ROW BEGIN
    INSERT INTO Favourites SET ProfilePhoto = (SELECT ProfilePhoto FROM Profile WHERE NEW.CompanyID = CompanyID);
END

我的代码中有哪些错误?它不起作用

2 个答案:

答案 0 :(得分:0)

为什么需要存储两次相同的数据?我总是被教导不要在多个表中存储相同的信息。如果您需要收藏夹表,为什么不只是存储:

| FavouritesID | CompanyID | CustomerID |

然后,如果您需要配置文件表中的其他信息,请从收藏夹表中找到公司ID

答案 1 :(得分:0)

我想你可以使用插入后 .............

CREATE OR REPLACE TRIGGER orders_after_insert
AFTER INSERT
   ON orders
   FOR EACH ROW

DECLARE
   v_username varchar2(10);

BEGIN

   -- Find username of person performing the INSERT into the table
   SELECT user INTO v_username
   FROM dual;

   -- Insert record into audit table
   INSERT INTO orders_audit
   ( order_id,
     quantity,
     cost_per_item,
     total_cost,
     username )
   VALUES
   ( :new.order_id,
     :new.quantity,
     :new.cost_per_item,
     :new.total_cost,
     v_username );

END;