[英]Assign values to variables inside a SELECT query
我有一個復雜的MySQL觸發器,此刻我想簡化一下。 以下是觸發器。
CREATE TRIGGER `Ongoing_Portfolio_AINS` AFTER INSERT ON `Ongoing_Portfolio` FOR EACH ROW
BEGIN
UPDATE Portfolio
SET Invest_Amount = New.Investment_Value,
Cash_Value = New.Cash_Value,
Date_Of_Last_Update = New.Updated_Date
WHERE idPortfolio = New.idPortfolio;
INSERT INTO Ongoing_Fees (currentDate, Gross_Fee, Insurance_Fee, Submit_Fee)
SELECT current_timestamp,
New.Gross_Fee,
(New.Gross_Fee)*(p.E_Fee/100),
((New.Gross_Fee)*(p.E_Fee/100))-(p.s_Fee/100)
FROM Portfolio p
WHERE p.idPortfolio = New.idPortfolio;
END;
您在這里看到的只是一部分,還有更多。
您可以看到以下幾行:
(New.Gross_Fee)*(p.i_Fee/100)
((New.Gross_Fee)*(p.i_Fee/100))-(ps/100)
其實,
Insurance_Fee
是New.Gross_Fee
百分比金額 Submit_Fee
是Insurance_Fee- (p.s_Fee/100)
我想為此目的引入變量,而不是編寫這些冗長的計算。 因此變量將類似於
_InsuranceFee := (New.Gross_Fee)*(p.i_Fee/100)
_SubmitFee := _InsuranceFee - (p.s_Fee/100)
這種工作會縮短計算時間,而且很容易閱讀。 但是,正如您所看到的,我的“插入”查詢實際上是在使用Select
查詢。 這是因為所有“百分比”值都來自表Portfolio
(別名p
),所以如何在Select
查詢中為變量賦值並將其直接插入數據庫?
否則,可以通過其他任何方式將值分配給變量,以便只在選擇查詢中使用變量?
您是否嘗試過僅使用局部變量?
declare `_InsuranceFee`, `_SubmitFee` decimal(10, 4);
INSERT INTO Ongoing_Fees (currentDate, Gross_Fee, Insurance_Fee, Submit_Fee)
SELECT current_timestamp, New.Gross_Fee,
`_InsuranceFee` := (New.Gross_Fee)*(p.E_Fee/100),
`_SubmitFee` := ((New.Gross_Fee)*(p.E_Fee/100))-(p.s_Fee/100)
FROM Portfolio p
WHERE p.idPortfolio = New.idPortfolio;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.