我一直在不遗余力地尝试使触发器起作用,它具有许多不同的变化,并且都以错误结尾。
我终于决定寻求帮助,因为我仍然是一个初学者。
假设我有一个多对多表,其中包含o.orderId和p.productId的pk,在此表中,我有两列,分别称为amount和totalPrice
然后,我创建了一个函数,该函数根据产品的productiD返回产品的价格。
CREATE FUNCTION func_getProductPrice($pId varchar(45)) RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE origPrice int(11);
SET origPrice = (select o.productPrice from (productId_has_orderId
inner join productId on productId = $pId);
RETURN origPrice;
END
还有一个插入前触发器,该触发器用于调用此函数以获取价格,根据新条目乘以返回值,然后更新此新条目的价格字段。
delimiter |
CREATE TRIGGER `vet`.`calcProdutctPrice` before INSERT ON `productId_has_orderId`
FOR EACH ROW
IF NEW.amount <> 1 THEN
BEGIN
DECLARE newPrice int(11);
set newPrice = ((SELECT SUM(