日期:2014-05-18  浏览次数:20455 次

sql2005 怎么设置级联删除
如果有一张表(同一张)

如图

主键是cate_id代表类别 每一列有对应的parent_id 代表对应的父类

没有父类时,parent_id值为0;

有父类时parent_id值为对应的cate_id

如何在删除cate_id的时候。同时删除 parent_id与cate_id 相等的项

------解决方案--------------------
图挂了。
语法类似这样:
SQL code

--外关键字增加级联删除、级联更新
alter table 表
add constraint fk_name foreign key(约束列)
references 主表(约束列)
on update cascade
on delete no action

------解决方案--------------------
这个应该不是级联来处理的事,楼主自己写语句来处理了。

1、递归找到该节点下所有子节点,例如按公司来看

SQL code

;with cte as
(
    select id,parentid from SM_Company where id = 2 --要删除的公司节点
    union all
    select a.id,a.parentid
    from SM_Company a join cte b on a.parentid = b.id
    where a.id is not null
)