5

DB にテーブルがあり、すべての行には、テーブル内の別の行の ID である親 ID があります (テーブルはツリーのような構造を表します)。テーブルを空にしたいです。でも出演するときは

DELETE FROM table_name WHERE true;

エラーが発生します (外部キー制約)。とにかくテーブルを空にするにはどうすればよいですか?

明確化: テーブル自体ではなく、テーブルの内容全体を削除したい。

4

5 に答える 5

4

外部キー関係を作成するときは、 を指定する必要がありますon delete cascade

編集: ここにかなり良いリファレンスがあります: http://en.wikipedia.org/wiki/Foreign_key

于 2010-12-20T23:11:26.080 に答える
1

ON DELETEの動作を変更できない場合は、テーブルが空になるまでこれを繰り返し行うことができます。

DELETE FROM table_name WHERE id NOT IN (SELECT parent_id FROM table_name)
于 2010-12-20T23:52:42.540 に答える
1

これでうまくいくはずです:

TRUNCATE table_name;
于 2010-12-20T23:11:04.037 に答える
0

まず、子を持たない行を削除します。

したがって、id 外部キーが parent_id の場合は、次のようにします。

DELETE FROM table_name WHERE parent_id IS NOT NULL;

次に、残りを削除します。

DELETE FROM table_name;
于 2010-12-20T23:12:44.337 に答える