Используя MySQL, при использовании триггера я выбираю значения с плавающей точкой и вставляю их в объявления с плавающей точкой, но когда я пытаюсь сравнить два значения в операторе if, кажется, что он не может сравнивать значения с плавающей точкой. После небольшого исследования я нашел несколько статей об ошибке с плавающей точкой при сравнении с плавающей точкой в операторе if, но в сети нет решения, которое работало бы так, как я ожидал.
TRIGGER `Customer_Details`.`Client_Account_Payback_AFTER_INSERT` AFTER INSERT ON `Client_Account_Payback` FOR EACH ROW
BEGIN
declare amountPaid float;
declare amountRamianing float;
declare loanAmount float;
select new.Client_Account_Payback_Amount into amountPaid;
select Client_Account_Borrow_Amount_Remaining
from Client_Account_Borrow
where Client_Account_Borrow_ID = new.Client_Account_Payback_Loan_Borrowed_ID
into amountRamianing;
select Client_Account_Amount_Borrowed
from Client_Account_Borrow
where Client_Account_Borrow_ID = new.Client_Account_Payback_Loan_Borrowed_ID
into loanAmount;
set amountRamianing = amountRamianing + amountPaid;
IF amountRamianing > loanAmount THEN
UPDATE `Client_Account_Borrow`
SET `Client_Account_Borrow_Amount_Remaining` = amountRamianing
WHERE `Client_Account_Borrow_ID` = new.Client_Account_Payback_Loan_Borrowed_ID;
ELSE
UPDATE `Client_Account_Borrow`
SET `Client_Account_Borrow_Amount_Remaining` = amountRamianing,
`Client_Account_Borrow_Paid_Back` = true
WHERE `Client_Account_Borrow_ID` = new.Client_Account_Payback_Loan_Borrowed_ID;
END IF;
END