派生列的值我有兩個表創建觸發器從另一個表
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)
我想根據order_unit 我想這個觸發器創建觸發器來計算UNIT_PRICE,但它沒有工作
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當前光標刪除先前存在
PLS-00103:遇到符號「;」當期待以下情況之一時:情況符號「case」被替換爲「;」接着說。
您指定的WHEN子句位置不正確,但更重要的是您命名ORDERITEMS表中存在的一個字段(ITEM_CODE_ORDERS)和存在於ITEMS表中的另一個字段(ITEM_CODE)。在WHEN子句中命名的所有字段必須存在於觸發器操作的表中(在本例中爲ORDERITEMS表)。請編輯您的問題並解釋更多關於您想要完成的內容。謝謝。 –
我想計算表ORDERITEMS中插入的每個項目的unit_price ,,如果(item_code)時(ITEMS表)中的(order_unit)等於'ton',那麼(unit_price)等於(Price_ton)時,此(unit_price)取決於order_unit。在ORDERITEMS – user2648669