Je reçois cette erreur lorsque j'essaie de créer ce déclencheur. J'ai tout essayé mais je ne sais pas ce qui semble être le problème.
Voici le code: p> et l'erreur est: p> CREATE TABLE Item (
Item_Id int PRIMARY KEY,
Menu_Id int,
Name varchar2(20),
Description varchar2(120),
Price int,
FOREIGN KEY(Menu_Id) REFERENCES Menu(Menu_Id)
);
CREATE TABLE OrderRecord (
OrderRecord_Id int PRIMARY KEY,
Item_Id int,
Employee_Id int,
Reservation_Id int,
Order_Time date,
Quantity int,
TotalPrice int,
FOREIGN KEY(Item_Id)References Item(Item_Id),
FOREIGN KEY(Employee_Id)References Employee(Employee_Id),
FOREIGN KEY(Reservation_Id)References Reservation(Reservation_Id)
);
3 Réponses :
Le tableau de la tableRecord n'est pas mis à jour: vous ne pouvez pas faire référence à une valeur ancienne pour ce tableau; Vous devez lire cette valeur avec une instruction SELECT.
IF :OLD.price <> :new.price THEN new_totalprice := <Quantity> * :new.price;
Il n'y a pas de colonne Quantité code> dans le tableau
élément code> sur lequel vous appliquez la gâchette. P>
Si je comprends ce que vous voulez bien faire correctement, on dirait que vous souhaitez mettre à jour le prix total calculé de tous les entrées de commande code> checkrecord code> lorsqu'un élément élément code> a un Changement de prix.
CREATE OR REPLACE TRIGGER after_price_update
AFTER UPDATE
ON Item
FOR EACH ROW
BEGIN
IF NVL(:OLD.Price, 0) <> NVL(:new.Price, 0) THEN
-- Update the child table "OrderRecord" for this item using new price
UPDATE OrderRecord SET TotalPrice = Quantity * :new.Price WHERE Item_Id = :new.Item_id;
END IF;
END;