[英]Trigger(like) event in MySQL calculating values from current and previous row
[英]MySQL Trigger that requires a field from a previous event
我還有另一個觸發問題,在解釋之前,我將向您展示代碼:
DELIMITER $$
CREATE PROCEDURE transferFunds ( receiver INT, sender INT, amount FLOAT )
BEGIN
DECLARE senderBalance FLOAT;
DECLARE receiverBalance FLOAT;
SELECT balance INTO senderBalance
FROM accounts
WHERE accountNumber = sender;
SELECT balance INTO receiverBalance
FROM accounts
WHERE accountNumber = receiver;
SET autocommit = 0;
UPDATE accounts
SET balance = senderBalance - amount
WHERE accountNumber = sender;
UPDATE accounts
SET balance = receiverBalance + amount
WHERE accountNumber = receiver;
IF senderBalance < amount THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END$$
CREATE TRIGGER transferTrigger AFTER UPDATE ON accounts
FOR EACH ROW
BEGIN
-- Insert the Receiver and Sender and Amount to transfer_log table
END$$
我想創建一個觸發器來記錄剛剛發生的傳輸,但是我不能,因為觸發器可以在每行事件中使用。 如果我想在transfer_log表中記錄轉移事件並插入“至”和“發件人”帳號以及已轉移的金額,該怎么辦?
如您在問題中所述,觸發器按行工作。
您應該直接在存儲過程中進行日志記錄。 但是,您可以使用一種解決方法,盡管我認為它並不安全-特別是在處理貨幣交易時(如OP中所示)。
在您存儲的過程中:
SET @TranSender = sender;
SET @TranReceiver = receiver;
...
在觸發器內:
INSERT log_table(Sender, Receiver...)
VALUES (@TranSender , @TranReceiver...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.