1

わかりました、私の問題に最適なタイトルではないかもしれません。これは、データベースに2つのテーブルがある場合です。

親テーブル

---------
 id name 
---------
 0   A
 1   B
 2   C

子テーブル

-------------------------
 id   name    parent_id
-------------------------
 0   child_A    1
 1   child_B    0
 2   child_C    2

親テーブルのレコードAが削除された場合、parent_id 0 (A は id 0)を持つすべての子を削除するにはどう すればよいです か??

あなたが私の問題を理解し、私を助けてくれることを願っています.. :) advのおかげで.. :)

私は解決策を持っていると思います。最初に、このクエリで親をもう持たないすべてのフィールドを取得しようとします

SELECT * FROM folders C where  NOT EXISTS (select * from folders as A INNER JOIN gis_folders as B on (A.parent_id = B.id) where A.id= C.id )

今、私はそのクエリからの結果のすべての行を削除する必要があります.. :)

4

5 に答える 5

2

これはカスケード削除と呼ばれます。外部キーを設定するときに、子行が削除されるように指定できます。

詳細については、 http: //www.sqlite.org/foreignkeys.html のセクション 4.3 を参照してください。

于 2013-07-05T02:53:36.750 に答える
1

外部キーが設定されていない場合は、これを行います

DELETE parent, child 
FROM parent LEFT JOIN child ON parent.id = child.parent_id 
WHERE parent.id = 0
于 2013-07-05T02:59:45.903 に答える
0

別の方法として、親 A の ID をパラメーターとして受け取るプロシージャーを作成することもできます。

今ライタークエリのように

Cid から Cid を削除 (CparentID が in の c から Cid を選択 (BparentID = aid の B から入札を選択))

BparentID = aid の B から削除

A から削除します。ここで、援助 = 援助

これを参照することもできます

http://msdn.microsoft.com/en-us/library/aa933119%28SQL.80%29.aspx

于 2013-07-05T05:03:22.550 に答える