mySQL - UPDATE TRIGGER,如何将 .NEW 值与同一行中的另一条数据进行比较
mySQL - UPDATE TRIGGER, how to compare a .NEW value to another piece of data in the same row
我一直在尝试做的是在更新行的值之前触发一个触发器语句。
该语句需要查看要更新的新存入金额是否大于另一列中的现有债务,这是我目前尝试过的。
DELIMITER $$
CREATE TRIGGER BankTrail
BEFORE UPDATE ON loan
FOR EACH ROW BEGIN
IF (NEW.`paid`> OLD.debt) THEN
INSERT INTO table1 VALUES (.....);
END IF;
END$$
DELIMITER ;
table(贷款)结构是 3 列
债务已付 CUSTNO
我如果支付的金额大于我需要触发器工作的债务。
我试过使用OLD.DEBT(但这没有用,因为债务金额在更新期间没有改变)
我还考虑过使用 SELECT 语句,如
IF (NEW.`paid`> SELECT
debt
FROM loan
WHERE ...?
) THEN
但同样,没有标识符指向 select 该行,通过使用 CUSTNO 或 DEBT,因为 none 在初始 UPDATE 语句中更改了这些。
UPDATE loan
SET paid = (amount paid)
WHERE custno = (customer number);
任何帮助将不胜感激。谢谢
将更新前更改为更新后,您的触发器应该可以工作
我一直在尝试做的是在更新行的值之前触发一个触发器语句。
该语句需要查看要更新的新存入金额是否大于另一列中的现有债务,这是我目前尝试过的。
DELIMITER $$
CREATE TRIGGER BankTrail
BEFORE UPDATE ON loan
FOR EACH ROW BEGIN
IF (NEW.`paid`> OLD.debt) THEN
INSERT INTO table1 VALUES (.....);
END IF;
END$$
DELIMITER ;
table(贷款)结构是 3 列
债务已付 CUSTNO
我如果支付的金额大于我需要触发器工作的债务。
我试过使用OLD.DEBT(但这没有用,因为债务金额在更新期间没有改变)
我还考虑过使用 SELECT 语句,如
IF (NEW.`paid`> SELECT
debt
FROM loan
WHERE ...?
) THEN
但同样,没有标识符指向 select 该行,通过使用 CUSTNO 或 DEBT,因为 none 在初始 UPDATE 语句中更改了这些。
UPDATE loan
SET paid = (amount paid)
WHERE custno = (customer number);
任何帮助将不胜感激。谢谢
将更新前更改为更新后,您的触发器应该可以工作