Oracle 中如何相应一些系统事件

applecjn 2004-11-11 12:13:32
刚开始学oracle 什么都不懂, 有一些菜问题要请教大虾们
比如我要实现一下的功能 要怎么做:
我有一个 记录因为借书超期不还 而罚款的表
create table
(
account_id number,
book_id number,
fine numeric(4,2)
);

每当一天过去(就是到00:00am)时, 就给表中所有的记录的fine 加上一天的罚款额x元

想这样的问题要怎么做啊, 好像是不是用触发器啊, 不懂啊
我用的是 oracle 10g for solaris

谢谢
...全文
127 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
applecjn 2004-11-12
  • 打赏
  • 举报
回复
技术上的问题时解决了, 但是想类似这样的计算 在3 层架构中是放在哪里啊, 我是指
client<->app server<->rdb 放在app server 的business logic 中呢 还是放在rdb里, 哪种在设计上比较优越啊
GerryYang 2004-11-12
  • 打赏
  • 举报
回复
同意bluelamb(bluelamb
rabbitbug 2004-11-11
  • 打赏
  • 举报
回复
我觉的这样不好
这样没必要啊
你完全可以他来还时再计算他要罚多少
当然你要统计现在有多少人的书超期了
要罚多少
这可以另外做一个统计

或是你在你的应用做一个定时器
在每天0点时触发运行去计算
但如此你的应用程序要一直运行
不能关
jametong 2004-11-11
  • 打赏
  • 举报
回复
1. 只需要记录fine的方法和基数就好了, 没有必要每天进行这种更新处理, 无端增加系统负担

这样只要在用户查询的时候计算就好了.^_^

2. 基于统计方面的东西, 可以考虑使用物化视图(materialized views)
jack_4826 2004-11-11
  • 打赏
  • 举报
回复
job+procedure
g8y 2004-11-11
  • 打赏
  • 举报
回复
学习
bluelamb 2004-11-11
  • 打赏
  • 举报
回复
variable job number;
begin
sys.dbms_job.submit(:job,
'begin www; end;',
to_date('2004-11-10','yyyy-mm-dd'),
'sysdate+1');
commit;
end;
bluelamb 2004-11-11
  • 打赏
  • 举报
回复
1.建存储过程
create or replace www
as
begin
update table set price=price+2 where...;
end ;
2.建个job
variable job number;
begin
sys.dbms_job.submit(:job,
'begin www; end;',
sysdate,
'sysdate+1/1440');
commit;
end;
zhangzhidong2002 2004-11-11
  • 打赏
  • 举报
回复
可以用存储过程实现啊
applecjn 2004-11-11
  • 打赏
  • 举报
回复
这样啊, 好 尝试一下先, 谢谢了
bzszp 2004-11-11
  • 打赏
  • 举报
回复
用job+procedure

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧