有两张表t_order,t_product.
t_order
ORD_ID NUMBER(9,0) NOT NULL,
PDT_ID VARCHAR2(7),
CLT_ID NUMBER(9,0),
ORD_DATE DATE,
ORD_COUNT NUMBER(9,0),
IS_SHIPPED NUMBER(1,0) DEFAULT 0,
CONSTRAINT PK_T_ORDER PRIMARY KEY (ORD_ID)
t_product
PDT_ID VARCHAR2(7) NOT NULL,
PDT_NAME VARCHAR2(50),
PDT_PDATE DATE,
COM_ID NUMBER(9,0),
PDT_STOCK NUMBER(9,0),
CONSTRAINT PK_T_PRODUCT PRIMARY KEY (PDT_ID)
我现在想写一个触发器, 在 对表 t_order 作insert, update 操作时,判断 t_product表中的字段pdt_stock ,看它(t_product) 的 value 是不是>0 如果 如果<0 就提示“货存不足”!
另外,如果我的数据库的PDT_STOCK 采用的是,到0了在给它更新值,也就是我的实际货存=(PDT_STOCK(固定值)-买出去的(SUM(ORD_COUNT)),如何实现
t_order
ORD_ID NUMBER(9,0) NOT NULL,
PDT_ID VARCHAR2(7),
CLT_ID NUMBER(9,0),
ORD_DATE DATE,
ORD_COUNT NUMBER(9,0),
IS_SHIPPED NUMBER(1,0) DEFAULT 0,
CONSTRAINT PK_T_ORDER PRIMARY KEY (ORD_ID)
t_product
PDT_ID VARCHAR2(7) NOT NULL,
PDT_NAME VARCHAR2(50),
PDT_PDATE DATE,
COM_ID NUMBER(9,0),
PDT_STOCK NUMBER(9,0),
CONSTRAINT PK_T_PRODUCT PRIMARY KEY (PDT_ID)
我现在想写一个触发器, 在 对表 t_order 作insert, update 操作时,判断 t_product表中的字段pdt_stock ,看它(t_product) 的 value 是不是>0 如果 如果<0 就提示“货存不足”!
另外,如果我的数据库的PDT_STOCK 采用的是,到0了在给它更新值,也就是我的实际货存=(PDT_STOCK(固定值)-买出去的(SUM(ORD_COUNT)),如何实现
create or replace trigger triname
before insert or update on table
for each row
begin
if t_product.pdt_stock < 0 then
dbms_output.put_line('货存不足');
end if;
end;2
不太懂,是这样吗?实际货存=
select pdt_stock - sum(ord_count)
from t_product, t_order
group by pdt_id
create or replace trigger t_order_trigger
before update or insert
on t_order
for each row
begin
update t_product set pdt_stock = (select stock from (select pdt_id, (t_product.pdt_stock-sum(t_order.ord_count))stock from t_product, t_order where t_product.pdt_id = t_order.pdt_id group by t_order.pdt_id));
update t_product set pdt_stock = 0;
dbms_output.put_line('the stock is : '+pdt_stock);
end;
when inserting then
--do insert
when updating then
--do update
end