У меня есть проблема с моим триггером, это выглядит следующим образом:Как оптимизировать мой триггер с помощью математики?
CREATE TRIGGER [Balance_monthly]
ON [dbo].[Balance]
FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
UPDATE Months
SET Months.Balance_monthly =
CASE
WHEN Balance.In_Months > 1 THEN Amount_Monthly
END
FROM Balance
JOIN Months
ON Months.Id <= Balance.In_Months;
UPDATE Months
SET Months.Balance_monthly =
CASE
WHEN Balance.In_Months >= 13 THEN Amount_Monthly * 2
END
FROM Balance
JOIN Months
ON Months.Id <= Balance.In_Months - 12;
UPDATE Months
SET Months.Balance_monthly =
CASE
WHEN Balance.In_Months >= 25 THEN Amount_Monthly * 3
END
FROM Balance
JOIN Months
ON Months.Id <= Balance.In_Months - 24;
END
Это таблица, в которой хранится мой триггер, есть только одна строка, и он будет оставаться таким образом, так что не думаю о том, что ,
Это таблица, в которую я помещал значения в зависимости от количества In_Months.
Как вы можете видеть, это работает отлично до тех пор пока в In_Months получить более 37. Мой вопрос, если есть какие-то умные головы, которые там могли бы помочь мне о том, как сделать это не вычислить его, независимо от того, сколько In_Months есть ,
Какова логика, в которой '> 1' используется в первом сравнении, но'> = 13', '> = 25' и т. Д. В других сравнениях? –
if'> 1' то он просто берет его непосредственно из Amount_Monthly, но если он '= = 13, то он должен' * 2' – Bungicasse
Нет, я имею в виду, почему первое сравнение «Больше» и все другое сравнения «больше или равно»? Что такое код, который нужно сделать, если 'In_Months' точно равен 1? –