由于在数据插入的时候,某一个或者几个字段中的数据带有空格(或左或右),导致数据在job中执行失败。
为了解决这个问题,我想到了触发器,在插入时或插入后把这些恼人的空格去掉。create trigger A
after insert
on test
for each fow
begin
update test set name=trim(:oid.name) where id=:old.id;
end;创建成功,但是在执行插入的时候报触发器无效,还说什么未验证。
我又改成如下触发器create trigger A
after insert
on test
begin
update test set name=trim(name) where id=id;
end;创建成功,但实际在执行插入后,字段中的数据还是有空格。求大师帮帮忙,或者帮我写一个也行。小弟先谢过。如若执行成功,分数多多。
为了解决这个问题,我想到了触发器,在插入时或插入后把这些恼人的空格去掉。create trigger A
after insert
on test
for each fow
begin
update test set name=trim(:oid.name) where id=:old.id;
end;创建成功,但是在执行插入的时候报触发器无效,还说什么未验证。
我又改成如下触发器create trigger A
after insert
on test
begin
update test set name=trim(name) where id=id;
end;创建成功,但实际在执行插入后,字段中的数据还是有空格。求大师帮帮忙,或者帮我写一个也行。小弟先谢过。如若执行成功,分数多多。
create or replace trigger A
before insert on test
for each fow
begin
:new.name := trim(:new.name);
end;
after insert
on test11
DECLARE
pragma autonomous_transaction; ----在DECLARE后面) 表示是自由事务处理
begin
update test11 set name=REPLACE(name,' ','') ;
commit;
end;
--------------
首先你用的是TRIM,只能对两边的空格进行过滤,所以改成REPLACE;
其次使用这中触发器的时候,只能对历史数据进行UPDATE,对本次的操作无效;
before insert on test11
for each row
begin
:new.name := trim(:new.name);
end;-------------这种可以正常更新本次的;
采用1楼的方法就可以了。