Plsql 无论何时购买或出售商品,都要在商品主表上维护库存数量

Plsql 无论何时购买或出售商品,都要在商品主表上维护库存数量,plsql,plsqldeveloper,datatrigger,database-trigger,eventtrigger,Plsql,Plsqldeveloper,Datatrigger,Database Trigger,Eventtrigger,应在item_主表中至少保留3个库存 表:项目_主数据 create table item_master ( item_no number(5) primary key, name varchar(10), stock_on_hand number(5) default 0 ); 表:项目详情 create table item_detail ( item_no number(5) references item_master, operation va

应在item_主表中至少保留3个库存

表:项目_主数据

create table item_master
(
    item_no number(5) primary key,
    name varchar(10),
    stock_on_hand number(5) default 0
);
表:项目详情

create table item_detail
(
    item_no number(5) references item_master,
    operation varchar(10) check(operation in('Sales','Purchase')),
    quantity number(5)
);


insert into item_master values(101,'Chair',5);
insert into item_master values(102,'Sofa',4);
insert into item_master values(103,'Table',6);
  CREATE OR REPLACE TRIGGER triitem AFTER
    INSERT OR UPDATE OR DELETE ON item_detail
    FOR EACH ROW
BEGIN
    UPDATE item_master
    SET
        stock_on_hand =
            CASE :new.operation
                WHEN 'Sales'      THEN stock_on_hand -:new.quantity
                WHEN 'Purchase'   THEN stock_on_hand +:new.quantity
            END
    WHERE item_no =:new.item_no;
END;
/
我写了这个触发器来维持至少3只股票

    create or replace trigger tristk
    before insert or update or delete on item_master
    for each row
    declare 
        stk number(5);
    begin
select stock_on_hand into stk from item_master where item_no = :new.item_no;

        if(stk<=3) then 
            raise_application_error(-20000,'Not enough stock');    
        end if;
    end;
    /

你的问题是什么?我的扳机坏了