J'ai essayé d'implémenter ce déclencheur pendant un moment maintenant et je progresse (je pense!) Mais maintenant je reçois une erreur de mutation.Déclencheur pour calculer le sous-total
Ce que j'ai ici est trois entités (qui sont pertinentes ici), Customer_Order (total etc), Order_Line (quantité, sous-total etc) et produits (stock, prix). Order_line est une entité de lien et un produit peut donc se trouver dans plusieurs lignes de commande et un client_order peut avoir plusieurs lignes de commande, mais une ligne de commande ne peut apparaître qu'une seule fois dans une commande et ne peut contenir qu'un seul produit. Le but du déclencheur est de prendre le sous-total de order_line (ou le prix des produits que je pense réellement) et la quantité de order_line, les multiplier et mettre à jour le sous-total du nouveau order_line. Donc j'insère une ligne order_line avec mon produit étranger, quantité de 3 et prix de 4.00, le déclencheur multiplie les deux par 12 et met à jour le sous-total. Maintenant, je pense qu'il est bon d'utiliser ici le prix au lieu du sous-total de Order_line pour corriger l'erreur de mutation (qui se produit parce que je demande au déclencheur de mettre à jour la table qui est accessible par l'instruction, mais comment? puis-je résoudre le problème de quantité? La quantité ne sera pas toujours la même valeur que le stock, elle doit être inférieure ou égale au stock, alors quelqu'un sait-il comment je peux résoudre ce problème pour sélectionner le produit et mettre à jour order_line? Merci.
CREATE OR REPLACE TRIGGER create_subtotal
BEFORE INSERT OR UPDATE ON Order_Line
for each row
DECLARE
currentSubTotal order_line.subtotal%type;
currentQuantity order_line.quantity%type;
BEGIN
select order_line.subtotal,order_line.quantity
into currentSubTotal,currentQuantity
from order_line
where product_no = :new.product_no;
IF (currentquantity>-1) then
update order_line set subtotal= currentSubTotal * currentQuantity where line_no=:new.line_no;
END IF;
END;
.
run
EDIT: Je pense que je pourrais utiliser la nouvelle syntaxe pour utiliser la valeur de quantité de l'instruction de déclenchement. Je vais essayer mais j'apprécierais la confirmation et l'aide encore, merci.
+1 pour le texte. (Je n'ai pas testé le code.Au début de la conception de la base de données, j'ai seulement accès à Oracle * à la maison *.) –