求一个oracle触发器

ffjing 2007-07-09 03:44:53
本人从未接触过oracle,现在需要用一个触发器,请各位大大帮忙。

有表如下:
CREATE TABLE "ME"."TABLE1"("ID" LONG NOT NULL,"NOTES" VARCHAR2(500 BYTE),"PRINTDATE" DATE,"PRINTMAN" VARCHAR2(10 BYTE))

现在要在NOTES列上做一个UPDATE触发器,当NOTES写入内容时,解析NOTES的内容,分析出打印人和打印时间分别更新到PRINTDATE和PRINTMAN,NOTES的内容格式大致如下:
打印人:XXX,打印时间:XXXXXXXXXXXXX
...全文
267 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
abilityforever 2007-07-12
  • 打赏
  • 举报
回复
期待有高手来解答
doer_ljy 2007-07-12
  • 打赏
  • 举报
回复
1、如楼上所说,根据数据库的范式要求,没有满足第一范式。
2、ID不需要用LONG吧?会有这么多的数据吗?varchar2(15)或者number(15)足够大了吧?
kanxue660 2007-07-11
  • 打赏
  • 举报
回复
如果你的数据有规律,那就根据特征拆分啊
hongqi162 2007-07-09
  • 打赏
  • 举报
回复
--建立测试数据
cREATE TABLE "TABLE1"("ID" LONG NOT NULL,"NOTES" VARCHAR2(500 BYTE),"PRINTDATE" DATE,"PRINTMAN" VARCHAR2(10 BYTE))
insert into table1(id,notes) values(1,'2005-10-10aaa');
--建立触发器
create or replace trigger trg_update
before update
on table1
for each row
begin
if updating('notes') then
:new.printdate:=to_date( substr(:new.notes,1,10),'yyyy-MM-dd' );--相应的字符串拆分可能需要用到instr
:new.printman:=substr(:new.notes,11,length(:new.notes)-10);--相应的字符串拆分可能需要用到instr
end if;
end;
--更新
update table1 set notes='2005-10-10aaa1a';
--执行查询
select * from table1;
--执行结果
<Long> 2005-10-10aaa1a 2005-10-10 aaa1a
--删除测试数据
drop table table1;

17,140

社区成员

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

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