这是我到目前为止所做的:
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”中。如何检查新值是否大于另一个表中的值?
谢谢!
答案 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进行比较。