我有一个名为my_func的函数,我想传递插入的最新行的一个字段,并使用函数返回的值更新同一行中的另一个字段。
我的DDL是,
create table sampletable ( indexid number(19,0) , xmlcolumn xmltype not null , checkfield raw(30) null) xmltype column xmlcolumn store as binary xml;
这是我的插入查询
insert into sample_table values ( 1 , some_xml_document );
以下是我的触发器,这是错误的课程
create or replace
trigger compute_func
after insert on sampletable
for each row
declare
returned_value raw(30);
begin
returned_value := my_func(sampleable.xmlcolumn);
update sampletrigger set checkfield = returned_value;
end;
答案 0 :(得分:2)
请勿使用update
分配值。此外,您需要使用BEFORE
触发器,因为您无法在AFTER
触发器中更改列值。
create or replace trigger compute_func
before insert on sampletable
for each row
begin
:new.checkfield := my_func(:new.xmlcolumn);
end;
手册中的更多详细信息:http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#LNPLS655