0

我有 2 张桌子

收藏夹表

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

配置文件表

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

我想使用 INSERTCompanyNameProfilePhoto进入收藏夹表CompanyID

因此,当将一行插入收藏夹表 ex CompanyID=1 时,CompanyName=NikeProfilePhoto=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

我的代码中有哪些错误?这没用

4

2 回答 2

0

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

| FavouritesID | CompanyID | CustomerID |

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

于 2013-02-06T05:03:34.957 回答
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;
于 2013-02-06T05:07:23.810 回答