テーブルParentTable
私はparentId
をプライマリキーとして持っています。SQL Server 2008のテーブルの階層削除
私は3つの子テーブルChildTable1
,ChildTable2
およびChildTable3
を持っています。 ChildTable1
で
、主キーは
ch1Id
であり、外部キーがfkparentId
(ParentTable
からPK)ChildTable2
でで、主キーは
ch2Id
であり、外部キーがfkparentId
とfkch1Id
(ChildTable1
からプライマリキー)であるChildTable3
、プライマリキーはch3Id
、外部キーはfkparentId, fkch1Id
とfkch2Id
(主キーはChildTable2
)
そして、これは私が次のように階層構造でこれらのテーブルを削除するクエリを書きたい...
になります。
最初に削除するChildTable3
>次にChildTable2
を削除してからChildTable1
を削除し、最後にParentTable
を削除してください。
私はそのように上の削除のためにChildTable2に進むと
delete from ChildTable3
where fkch2Id = ch2.ch2Id
and fkch1Id = ch1.ch1Id
and fkparentId = p.parentId
のようにこれを行うことの漠然とした考えを持っています。私はそれを明確にしたいと考えています。
ChildTable3のどの行を削除しますか?すべての行? ChildTable3のいくつかの条件を満たす行、または他のテーブルの条件を満たす行? –
ChildTable3と上記の他のテーブルからすべての行を削除します。 –
それから、 'ChildTable3'から' delete from ChildTable2'などを削除し、最後に 'ParentTable'から削除するだけです。他のテーブルに参加する必要はありません。 –