当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: #!/bin/bash d=date echo $d =============== 为什么显示date,而不是当前日期 ......
    摘要: 如题 ......


,怎样用触发器实现循环删除同一表中的所有相关的子记录

我现在有个表叫nClass,用来生成树形目录,里面有nClassId   ……   ParentId几个字段。ParentId里面储存的就是这条记录的上级记录的nClassId,顶级记录的ParentId为零。现在我想在DELETE一条记录的同时删除它下属的所有的记录。但我发现触发器只能被触发一次,被触发器删除的记录就不能再次激活触发器了,请问想要循环被触发的触发器怎样设计啊?  
   
  我写的的触发器是这样的:  
  CREATE   TRIGGER   nClass_ParentId_Delete   ON   dbo.nClass    
  FOR   DELETE  
    AS    
  DELETE   nClass   FROM   deleted     WHERE   nClass.ParentId=deleted.nClassId  
   
  请各位大虾怎样改啊?  
  谢谢了

NO.1   作者: Chiff

可以打开数据库的触发器“直接”递归功能:  
  ALTER   DATABASE   数据库名   SET   RECURSIVE_TRIGGERS   ON  
   
  这样就能递归了。  
   
  但是,递归的层数不能超过32层。  
 

NO.2   作者: hooboo

1     root       0  
  2     child1     1  
  3     child2     1  
  4     child3     2  
   
  declare   @Temp   table   (id   int)  
  insert   @Temp   values(@id)  
   
  while   exists   (  
  select   id   from   tablename  
  where   id   not   in   (select   id   from   @Temp)  
  and   fatherid   in   (select   id   from   @Temp)  
  )  
  insert   @Temp  
  select   id   from   tablename  
  where   id   not   in   (select   id   from   @Temp)  
  and   fatherid   in   (select   id   from   @Temp)  
   
  delete   from   tablename  
  where   id   in   (select   id   from   @Temp)  
   
 


 ·一个很弱的问题    »显示摘要«
    摘要: 我的机器是win98,其上的media play是6.0,我想在网上看一些视频的东西,可是页面显示的东西都是虚的,根本无法看到。是不是我的media play版本不够还是我ie应该设置一些东西,还是我要down一些插件?? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE