Mysql 是否使用触发器从另一个表向一个表插入新行?
我有两张桌子 收藏夹表Mysql 是否使用触发器从另一个表向一个表插入新行?,mysql,triggers,Mysql,Triggers,我有两张桌子 收藏夹表 ---------------------------------------------------------------------- | FavouritesID | CompanyID | CustomerID | ProfilePhoto | CompanyName | ---------------------------------------------------------------------- |
----------------------------------------------------------------------
| FavouritesID | CompanyID | CustomerID | ProfilePhoto | CompanyName |
----------------------------------------------------------------------
| |
| |
| |
----------------------------------------------------------------------
-------------------------------------------
| CompanyID | CompanyName | ProfilePhoto |
-------------------------------------------
| 1 | Nike |http://loca.. |
| 2 | Adidas |http://loca.. |
| 3 | PaulSmith |http://loca.. |
-------------------------------------------
配置文件表
----------------------------------------------------------------------
| FavouritesID | CompanyID | CustomerID | ProfilePhoto | CompanyName |
----------------------------------------------------------------------
| |
| |
| |
----------------------------------------------------------------------
-------------------------------------------
| CompanyID | CompanyName | ProfilePhoto |
-------------------------------------------
| 1 | Nike |http://loca.. |
| 2 | Adidas |http://loca.. |
| 3 | PaulSmith |http://loca.. |
-------------------------------------------
我想使用CompanyID
将CompanyName
和ProfilePhoto
插入收藏夹表中
因此,当一行插入到Favorites表ex CompanyID=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
我的代码中有哪些错误?它不起作用为什么需要将同一数据存储两次?我总是被教导不要在多个表中存储相同的信息。如果需要收藏夹表,为什么不存储:
| FavouritesID | CompanyID | CustomerID |
然后,如果您需要配置文件表中的其他信息,请从收藏夹表中找到带有公司ID的信息我认为您可以在插入后使用
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;
你想做的事情毫无意义,你试图实现触发器的尝试也没有意义。当您想知道
收藏夹的配置文件照片
时,请在配置文件
表中加入。