求一个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;