我有一个表ParentTable
,其中我有parentId
作为主键。在SQL Server 2008中对表进行层级删除
现在我有三个子表ChildTable1
,ChildTable2
和ChildTable3
。
- 在
ChildTable1
,主键是
ch1Id
和外键是fkparentId
(PK从ParentTable
) - 在
ChildTable2
,主键是
ch2Id
和外键是fkparentId
和fkch1Id
(从ChildTable1
主键) in
ChildTable3
,主键是ch3Id
,外键是fkparentId, fkch1Id
和fkch2Id
(来自ChildTable2
的主键)。
而且这样下去..
我想编写一个查询以下列方式hierarchially删除这些表。
首先删除ChildTable3
>然后删除ChildTable2
>然后删除ChildTable1
并最后删除ParentTable
。
我有这样类似
delete from ChildTable3
where fkch2Id = ch2.ch2Id
and fkch1Id = ch1.ch1Id
and fkparentId = p.parentId
则前进到ChildTable2删除等的一个模糊的概念。希望我明确表示。
要从ChildTable3中删除哪些行?所有的行?满足ChildTable3中某些条件的行或满足其他表中某些条件的行? – 2012-02-21 07:18:46
我想从ChildTable3和其他提到的表中删除所有行。 – 2012-02-21 07:23:03
然后你只需要从ChildTable3中删除,然后从ChildTable2中删除等等,最后你从ParentTable中删除。无需加入其他表格。 – 2012-02-21 07:26:44