2016-08-10 11 views
1

を削除することはできません。このようになります。私のカテゴリサブカテゴリテーブルです:親カテゴリは、だからここオーケー

cat_id | cat_name | parent | cat_status | parent_id 

1  | Mens  | --  | Active  | 0 

2  | Womens | --  | Active  | 0 

3  | Shoes | Mens | Active  | 1 

が質問:今、私は直接"Mens"カテゴリを削除

さて、それはそのプロンプトでなければなりませんあなたはメンズを削除することができます。"Mens"を含む最初のサブカテゴリを削除する必要があります(私の場合、シューズファーストを削除する必要があります)。

+0

だからあなたのエラー何であるあなた外部キー制約エラーが返されますか? –

+0

ちょうど今!私が "Mens"を削除した場合、それを削除することができますが、 "そのサブカテゴリを削除する必要があります"というメッセージが表示され、次に削除されます... –

+0

したがって、レコードを削除する前に、他のカテゴリの子どもがいて、存在する場合は手動で –

答えて

2

削除アクションの前に既存のサブカテゴリの可用性を確認する必要があります。 ajaxを呼び出して、サブカテゴリが存在するかどうかを確認できます。 "SELECT cat_id from table WHERE parent_id =?" 結果が見つかった場合は、サブカテゴリが利用可能であることをユーザーに警告または尋ねることができます。

0

あなたは同じテーブルIDに

EXをreferening外部キーを持つテーブルを作成することができます。

テーブルcategory_demo(NOT NULLと CAT_IDのint型のAUTO_INCREMENT、 PARENT_ID intデフォルトのNULL、 ラベルVARCHAR(100)NOT NULLデフォルト ''、 主キー(CAT_ID)、 外部キー(PARENT_ID)参照のcategory_demo(CAT_IDを作成)更新カスケードの削除RESTRICT );

親IDを持つルートカテゴリをNULLとして挿入します。あなたが親カテゴリを削除し、それが対応する子カテゴリを持っている時はいつでも

そして、それは

SQL Fiddle

関連する問題