我有三张table
tbl_payments(pay_id,date,amount,description,-------)
tbl_pay_trans(pay_id,trans_id)
tbl_transactions(trans_id,trans_date,trans_amount,trans_description,-----)
“tbl\u transaction”与“tbl\u payments”中的数据相同,还有一些其他值。为了保持两个表之间的关系,我使用了“tbl\u pay\u trans”。我想做的是,当更新tbl\u付款(金额,描述)时,需要在tbl\u交易(trans\u金额,trans\u描述)中做相同的更改。我编写了一个触发器来实现这一点,但它并没有像预期的那样更新tbl\u事务表的值。
我的扳机是
DELIMITER $$
CREATE TRIGGER update_trans
AFTER UPDATE on tbl_payments
FOR EACH ROW
BEGIN
DECLARE new_amount VARCHAR(50);
DECLARE new_description TEXT;
DECLARE new_pay_id,new_trans_id INT;
SET new_pay_id = OLD.pay_id;
SET new_amount = OLD.amount;
SET new_description = OLD.description;
SELECT trans_id INTO new_trans_id FROM tbl_pay_trans WHERE pay_id = new_pay_id;
UPDATE tbl_transactions SET
trans_amount = new_amount,
trans_description = new_description
WHERE trans_id = new_trans_id;
END$$
DELIMITER ;
请有人帮我找出我做错了什么。
1条答案
按热度按时间pgccezyw1#
它没有更新,因为您正在使用
OLD
上amount
以及description
需要使用的列NEW
即