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

求助 触发器!
文件夹树形结构目录表
folderid           文件夹id
foldername   文件夹名
fparentid        父文件夹id
isdelete         是否删除(逻辑删除)

表数据
folderid      foldername   fparentid  isdelete
1                   共享文件夹      0                0
2                   部门文件夹      0                0
3                   共享子文件夹   1                0
4                   财务共享            1               0
5                   2013年              4                0
6                   2014年              4                0
5                   2012年              4                0

需求是 所有的删除 都是逻辑删除 ( isdelete 置为1), 删除父文件夹 同时删除 父文件夹下的所有子文件夹。

触发器 
CREATE OR REPLACE TRIGGER A_U  BEFORE
UPDATE OF "ISDELETE" ON A表 FOR EACH ROW 
declare 
  newisdelete varchar2(1);
  oldisdelete varchar2(1);
  newdeletedate varchar2(20);
begin
  newisdelete:=:new.isdelete;
  oldisdelete:=:old.isdelete;
  newdeletedate:=:new.deletedate;
  if newisdelete='1' then
    update A表  set isdelete='1' where fparentid=:new.folderid;
  end if;  
end;
执行 update 操作后 (update  A  set  isdelete=‘1’  where  fparenti=4)
报ora 04091 表发生变化,触发器不能为读。




 


------解决方案--------------------
来接个分
------解决方案--------------------
啊。。。这也行