在触发之前检查新值是否大于另一个表中的值

时间:2013-04-30 02:32:26

标签: mysql

这是我到目前为止所做的:

DELIMITER //
CREATE TRIGGER insert_tr BEFORE INSERT ON ordline FOR EACH ROW
BEGIN

IF (NEW.Qty > ProdQ) THEN
    CALL ErrorMsg ('Not enough quantity to cover this order');
END IF;
END // DELIMITER ;

其中“ProdQ​​”是来自另一个表的列,“NEW.Qty”是传入的整数值。但是,我得到一个错误,说ProdQ​​不在表“ordline”中。如何检查新值是否大于另一个表中的值?

谢谢!

1 个答案:

答案 0 :(得分:0)

假设ProdQ​​存储在另一个名为Product的表中,并且ordline和Product表都包含一个名为ProdID的键列,那么你可以这样做:

if (NEW.Qty > 
   (select ProdQ from Product where Product.ProdID = NEW.ProdID limit 0,1)) THEN

总之,您需要将NEW.Qty值与另一个值进行比较,而不是与列进行比较。 Product表包含可能很多的行,每个产品对应一行,您需要告诉触发器需要将这些行中的哪一行与ProdQ​​值进行比较以与NEW.Qty进行比较。