2013-02-28 182 views
3

我有一个表ParentTableid, Name, town)及其子表humanmother, father)其中两列包含映射到父表。SQL Server 2005外键级联

父表具有town列,其中包含外键引用Towntownid, townname),并且该城镇添加了外键引用。

现在的问题是我需要给人表的级联约束,但在SQL Server多列中为同一父表不能给出级联。因此,我创建触发器这样,

create trigger DEL_Parent            
ON Parent 
instead of delete as  
    set nocount on  

    delete from human  
    where mother IN (select id from deleted)   
     or father IN (select id from deleted) 

delete from Parent where id in(select id from deleted). 

但是当我尝试执行触发时,系统显示以下错误

无法创建,而不是删除或代替更新触发 DEL_Parent上表家长。这是因为该表具有带级联删除或更新的外键 键。

如何解决问题?提前致谢。

回答

2

修改查询为:

create trigger DEL_Parent            
ON Parent 
after delete as  
    set nocount on  

    delete 
    from human  
    where mother IN (select id from deleted)   
    or father IN (select id from deleted) 

    delete 
    from Parent 
    where id in(select id from deleted) 

因为INSTEAD OF DELETE触发器不能在具有与DELETE动作定义的外键的表中定义。