日期:2014-05-17  浏览次数:20874 次

求一个oracle触发器
本人从未接触过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

------解决方案--------------------
--建立测试数据
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;