2014-09-20 150 views
0

请看看下面的图创建“后插入”触发器

enter image description here

我需要写一个触发器在Ongoing_PortfolioInsert操作后自动更新Ongoing_Fees

Portfolio.Other_Fee是一个百分比,而Ongoing_Fees.Other_Fee = Ongoing_Portfolio.Cash_Value * Portfolio.Other_Fee

请注意所有3个表中的idPortfolio。这里发生的是在用户将数据插入Ongoing_Portfolio之后,它使用idPortfolio扫描相关的Portfolio。然后从相关投资组合中抓取Other_Fee并将数据插入Ongoing_Fees。

下面是我写的触发器,但我无法编写插入方法来执行Other_Fee

CREATE TRIGGER `Ongoing_Portfolio_AINS` AFTER INSERT ON `Ongoing_Portfolio` FOR EACH ROW 
INSERT INTO Ongoing_Fees (idPortfolio,Other_Fee) 
VALUES 
(New.idPortfolio,) 

我该如何完成这个触发器?

例如:

Portfolio.idPortfolio = 1 
Portfolio.Other_Fee = 10% 

现在我将数据插入Ongoing_Portfolio

Ongoing_Portfolio.idPortfolio = 1 
Ongoing_Portfolio.Cash_Value = 1000 

现在,trigger引发,所以在Ongoing_Fees数据应该是

Ongoing_Fees.idPortfolio = 1 
Ongoing_Fees.Other_Fee = 100 
+0

你能举一个例子后,应该会出现什么效果插入ongoing_portfolio – 2014-09-20 15:24:45

+0

请考虑收费,而不是近似的像'DOUBLE'确切的数据类型'DECIMAL'的一个例子。 – VMai 2014-09-20 15:30:00

+0

@BrianDeMilia:完成。请参阅已编辑的问题 – 2014-09-20 15:44:51

回答

3

是这是你什么ED?

INSERT INTO Ongoing_Fees (idPortfolio,Other_Fee) 
    select New.idPortfolio, p.other_fee 
    from Portfolio p 
    where p.idPortfolio = New.idPortfolio; 
+0

感谢您的回复。但是,错误。“值”部分在哪里? – 2014-09-20 15:39:13

+0

@Sniper这是(INSERT INTO ... SELECT语法)[https://dev.mysql.com/doc/refman/5.6/en/insert-select.html]。不需要'VALUES'。 – VMai 2014-09-20 15:41:36

+0

@Sniper。 。 。 'insert'不需要'Values'。事实上,'插入。 。 。选择'做一切'插入。 。 。价值观',还有更多。 – 2014-09-20 15:43:57