在MySQL触发器中创建变量

在MySQL触发器中创建变量,mysql,sql,triggers,Mysql,Sql,Triggers,请查看下面的SQL查询 DELIMITER $$ CREATE TRIGGER `Portfolio_AINS` AFTER INSERT ON `Portfolio` FOR EACH ROW INSERT INTO Initial_Fees (idPortfolio, Current_Time_Stamp, Initial_Gross_Fee, Initial_Monetary_Fee) VALUES ( New.idPortfolio, current_timestamp, (New.I

请查看下面的SQL查询

DELIMITER $$
CREATE TRIGGER `Portfolio_AINS` AFTER INSERT ON `Portfolio` FOR EACH ROW
INSERT INTO Initial_Fees (idPortfolio, Current_Time_Stamp, Initial_Gross_Fee, Initial_Monetary_Fee)
VALUES (
New.idPortfolio, 
current_timestamp,
(New.Invest_Amount*(New.Initial_Gross_Fee/100)),
(New.Invest_Amount*(New.Initial_Gross_Fee/100))*(New.Initial_Company_Fee/100)
)
在这里,
Initial\u Monetary\u Fee=Initial\u Gross\u Fee*(New.Initial\u Company\u Fee/100)

但是我已经写了
(New.investment\u Amount*(New.Initial\u Gross\u Fee/100))*(New.Initial\u Company\u Fee/100)

相反,我希望创建变量并将值分配给它们,这样我就可以避免这样长的计算。例如,如下所示

InitialGrossFee = (New.Invest_Amount*(New.Initial_Gross_Fee/100))
IntialMonetaryFee  = InitialGrossFee * (New.Initial_Company_Fee/100)

那么,我如何创建这样的变量并将值存储在边MySQL触发器中呢?我也希望有一些解释。

如果需要在触发器中使用多个语句,则必须使用BEGIN。。。。结束。 然后,您可以像往常一样将值分配给uservars:

CREATE TRIGGER `Portfolio_AINS` AFTER INSERT ON `Portfolio`
FOR EACH ROW
BEGIN
    SET @grossfee := New.Invest_Amount*(New.Initial_Gross_Fee/100);
    INSERT INTO Initial_Fees (idPortfolio, Current_Time_Stamp, Initial_Gross_Fee, Initial_Monetary_Fee)
    VALUES (
        New.idPortfolio, 
        current_timestamp,
        @grossfee,
        @grossfee *(New.Initial_Company_Fee/100)
        );
END$$