在MySQL中创建触发器并更新

时间:2015-12-05 06:24:48

标签: mysql triggers

我需要帮助使用MySQL创建特定的触发器。下面给出了我的触发器的详细信息以及我当前的声明。但是,我的陈述不断给我一个错误信息,所以我做错了。任何帮助都会很棒!谢谢!

问题a)创建一个名为membership_balance_updates的触发器,该触发器将捕获对成员资格中的mem_balance列所做的任何更新。触发器应仅捕获成员余额实际发生变化的那些事务。 mem_num,旧的mem_balance,新的mem_balance,用户,事务日期应该放在membership_balance_audit表中。

我的陈述:

CREATE TRIGGER membership_balance_updates
AFTER UPDATE OF mem_balance ON membership
FOR EACH ROW
INSERT INTO membership_balance_audit 
VALUES (mem_mum, old_mem_balance, new_mem_balance, transaction_date, 
transaction_user); 

Table "Membership"

以下是创建membership_balance_audit表的以下脚本。

CREATE TABLE IF NOT EXISTS membership_balance_audit
    (mem_num                   INTEGER,
     old_mem_balance     DECIMAL(10,2),
     new_mem_balance   DECIMAL(10,2),
     transaction_date       TIMESTAMP,
     transaction_user       VARCHAR(50));

Part c

1 个答案:

答案 0 :(得分:1)

尝试使用:

CREATE TRIGGER membership_balance_updates 
AFTER UPDATE ON membership
FOR EACH ROW 
BEGIN
    IF NEW.mem_balance <> OLD.mem_balance THEN
        INSERT INTO membership_balance_audit
            (mem_mum, old_mem_balance, new_mem_balance, transaction_date,
             transaction_user)
        VALUES (OLD.membership_id, OLD.mem_balance, NEW.mem_balance, NOW(),
                CONCAT(OLD.first_name, ' ', OLD.last_name));
    END IF;
END;