Oracle PLS-00049: неверная переменная привязки - PullRequest
0 голосов
/ 16 июня 2020

Я получаю эту ошибку, когда пытаюсь создать этот триггер. Я пробовал все, но не знаю, в чем проблема.

Вот код:

CREATE OR REPLACE TRIGGER after_price_update
AFTER UPDATE
ON Item
FOR EACH ROW
DECLARE new_totalprice INT;
BEGIN
   IF :OLD.price <> :new.price THEN
   new_totalprice := :old.Quantity * :new.price;
        INSERT INTO OrderRecord(OrderRecord_Id, Item_Id, Employee_Id, Reservation_Id, Order_Time, Quantity, TotalPrice)
        VALUES(old.OrderRecord_Id, old.Item_Id, old.Employee_Id, old.Reservation_Id, old.Order_Time, old.Quantity, new_totalprice);
    END IF;
END;

И ошибка:

4/22      PLS-00049: bad bind variable 'OLD.QUANTITY'

Таблицы выглядят так:

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)
);

Ответы [ 2 ]

0 голосов
/ 16 июня 2020

бхаи нет столбца «Количество» В ТАБЛИЦЕ «ПУНКТ», НА КОТОРОЙ ВЫ применяете триггер

0 голосов
/ 16 июня 2020

Table OrderRecord не является обновляемой таблицей: вы не можете ссылаться на старое значение для этой таблицы; вам нужно прочитать это значение с помощью некоторого оператора SELECT.

IF :OLD.price <> :new.price THEN
   new_totalprice := <Quantity> * :new.price;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...