我有使用MySQL的触发器的另一个问题。 这两个表,即债务和配置文件现在通过触发器连接,该触发器在stackoverflow中从我的其他问题解决。
CREATE TRIGGER `bal_load_debt` BEFORE INSERT ON `debt`
FOR EACH ROW BEGIN
UPDATE `profile`
SET `bal` = `bal` + NEW.`amount`
WHERE `profile`.`id` = NEW.`profile_id`;
END
债务
+--+----------+------+
|ID|PROFILE_ID|AMOUNT|
+--+----------+------+
|1 |1 |500 |
+--+----------+------+
PROFILE
+--+-------+-----+------+
|ID|BALANCE|LIMIT|STATUS|
+--+-------+-----+------+
|1 |500 |650 |OPEN |
|2 |300 |500 |OPEN |
+--+-------+-----+------+
我的新问题是,如果新余额大于或等于限额,则状态应更改为关闭。我尝试通过添加
来修改触发器 bal_load_debt IF `balance` >= `limit`
THEN UPDATE `profile`
SET `status` = 'CLOSE';
END IF;
但导致错误#1054未知列'余额'在'字段列表'
我还尝试在配置文件表上创建另一个更新后触发器,但我认为使用的语法不是那么有效:(
目标是如果我在债务上添加另一行,如:
+--+----------+------+
|ID|PROFILE_ID|AMOUNT|
+--+----------+------+
|1 |1 |500 |
|2 |1 |150 |
+--+----------+------+
配置文件表应如下所示:
+--+-------+-----+------+
|ID|BALANCE|LIMIT|STATUS|
+--+-------+-----+------+
|1 |650 |650 |CLOSE |
|2 |300 |500 |OPEN |
+--+-------+-----+------+
我很高兴你的帮助:)
答案 0 :(得分:1)
你应该更新BEFORE使用以下查询检查触发配置文件表
IF NEW.balance >= LIMIT THAN
SET NEW.status = 'CLOSE';
END IF
这里我假设LIMIT是要支付的总债务