精选文章
>> Oracle 专栏
>> 快照和触发子结合使用的例子
由 webmaster 发布于: 2001-02-05 11:39
软件环境:
1、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安装路径为:C:\ORANT
需求说明:
大型商场、超市中,都会有计算机管理系统,很多都用到了Oracle数据库, 此行业中有一个商品库存管理的问题,因为商品种类特别多(超过10万种), 一般库存表中记载的是只是当日库存,那么如何记录历史库存呢?
实现方法:
SQL*Plus中
create table 当前库存表(
spbm char(6), --商品编码
kcsl number --库存数量
);
create table 历史库存表(
rq char(8), --日期
spbm char(6), --商品编码
kcsl number --库存数量
);
drop snapshot 计算快照;
create snapshot 计算快照 refresh next round(sysdate+0.5)+116/144
as
select * from dual;
--每天晚19:20执行,这个快照什么也不做,只是为了触发下面的触发子,因为在这个快照刷新的时候,有新记录产生
create or replace trigger 记录历史库存触发子 before insert on snap$_计算快照 for each row
begin
insert into 历史库存表(rq,spbm,kcsl)
select to_char(sysdate,'yyyymmdd'),spbm,kcsl from 当前库存表;
exception when others then
raise_application_error(-10000,'不能记录历史库存');
end;
/
以上只是一种方法,主要目的是介绍快照和触发器结合使用的方法。
|