0

这是我到目前为止所拥有的:

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”中。如何检查新值是否大于不同表中的值?

谢谢!

4

1 回答 1

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 表可能包含许多行,每个 Product 一个,您需要告诉触发器它需要从这些行中的哪一行获取 ProdQ​​ 值以与 NEW.Qty 进行比较。

于 2013-04-30T03:03:45.633 回答