У меня есть две таблицысоздать триггер для получения значений столбцов из другой таблицы
Items
ITEM_CODE VARCHAR2(20)
ITEM_NAME VARCHAR2(20)
PRICE_TON NUMBER(38,5)
PRICE_REAM NUMBER(38,5)
PRICE_SHEET NUMBER(38,5)
Orderitems
ORDER_ITEMS_CODE VARCHAR2(20)
ORDER_CODE VARCHAR2(20)
ITEM_CODE_ORDERS VARCHAR2(20)
ORDER_QUANTITY NUMBER(4,0)
ORDER_UNIT VARCHAR2(5)
UNIT_PRICE NUMBER(38,5)
Я хочу, чтобы создать триггер для вычисления unit_price на основе order_unit Я попробовал этот курок, но он не работает
create or replace TRIGGER "Orderitems_T1"
BEFORE
insert or update on orderitems
for each row
begin
declare
order_unit orderitems.order_unit%type;
unit_price orderitems.unit_price%type;
price_sheet Items.price_sheet%type;
price_ream Items.price_ream%type;
price_ton Items.price_ton%type;
item_code Items.item_code%type;
item_code_orders orderitems.item_code_orders%type;
when item_code_orders = item_code then
begin
case
when order_unit ='sheet' then unit_price := price_sheet;
when order_unit = 'ton' then unit_price := price_ton ;
when order_unit = 'ream' then unit_price := price_ream ;
else unit_price := 0;
end case;
end;
end;
Я получаю эту ошибку
PLS-00103: Обнаружен символ «кОГДА», когда ожидает одно из следующих действий: начать функцию ргадт процедуры подтип станд e текущий курсор delete существует до
PLS-00103: Встретил символ «;» когда ожидается одно из следующего: случай Символ «случай» был заменен на «;» продолжать.
Предложение WHEN, которое вы указали, находится не в том месте, но более того, вы указываете одно поле (ITEM_CODE_ORDERS), которое существует в таблице ORDERITEMS, и другое поле (ITEM_CODE), которое существует в таблице ITEMS. Все поля, указанные в предложении WHEN, должны существовать в таблице, в которой работает триггер (в этом случае таблица ORDERITEMS). Измените свой вопрос и объясните, что вы пытаетесь выполнить. Благодарю. –
Я хочу рассчитать unit_price для каждого элемента, вставленного в таблицу ORDERITEMS ,, это (unit_price) зависит от order_unit, если (order_unit) равно 'ton', тогда (unit_price) равно (Price_ton) в таблице ITEMS, когда (item_code) в ITEMS равно (Item_code_orders) в ORDERITEMS – user2648669