目录
一、应用描述
【1】、应用场景:
【2】、具体场景:
二、表结构介绍
【1】表名介绍:
【2】表结构:
三、设置触发器
一、应用描述
【1】、应用场景:
现有一张库存明细以及销售明细表,销售明细表发生售卖即新增一条销售数据,同时库存相应减少一件;
【2】、具体场景:
【1】1001号产品售出1件,1001号产品库存减少一件;
【2】1001号产品发生1件退货,即销售-1件,1001号产品库存+1。
二、表结构介绍
【1】表名介绍:
库存明细表:e_stock_info
销售明细表:e_sales_info
【2】表结构:
三、设置触发器
CREATE OR REPLACE TRIGGER sales_trigger
BEFORE INSERT
ON e_sales_info -- 替换为实际的销售记录表名
FOR EACH ROW
DECLAREv_prod_id NUMBER; -- 替换为实际的产品ID列名v_quantity_sold NUMBER; -- 替换为实际的销售数量列名v_current_stock NUMBER;
BEGIN-- 获取销售记录中的产品ID和销售数量v_prod_id := :NEW.prod_id; -- 假设产品ID列名为prod_idv_quantity_sold := :NEW.quantity_sold; -- 假设销售数量列名为quantity_sold-- 获取当前库存数量SELECT stock_quantity INTO v_current_stockFROM e_stock_info -- 替换为实际的产品表名WHERE prod_id = v_prod_id;-- 检查库存是否足够IF v_current_stock >= v_quantity_sold THEN-- 更新库存数量UPDATE e_stock_infoSET stock_quantity = v_current_stock - v_quantity_soldWHERE prod_id = v_prod_id;ELSE-- 抛出异常或执行其他操作,表示库存不足RAISE_APPLICATION_ERROR(-20001, '库存不足');-- 更新库存数量UPDATE e_stock_infoSET stock_quantity = v_current_stock - v_quantity_soldWHERE prod_id = v_prod_id;END IF;
END;