2013-04-30 49 views
0

这是我到目前为止有:触发器来检查,如果新值大于value另一个表之前

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

假设ProdQ​​存储在另一个表,称为产品,并且两个ord​​line和产品表包含一个名为prodID键列,那么你可以做这样的事情:

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

总之,你需要将NEW.Qty值与另一个值比较,而不是针对列。产品表包含潜在的许多行,每个产品都有一行,并且您需要告诉触发器哪些行需要使用ProdQ​​值与NEW.Qty进行比较。

相关问题