2015-12-02 7 views
1

Предположим, у меня есть три таблицы называется категории, подкатегории и PRODCUT и структура этих таблицКак запретить пользователям удаление записей

  category 

====Catid=======CatName===== 
|  1  | DRESS | 
|  2  | FOOD  | 




        subcategory 

====SubCatid=======SubCatName========Catid===== 
|  1  | cake   |  2  | 
|  2  | t-shirt  |  1  | 
|  3  | chocolate  |  2  | 
|  4  | shirt   |  1  | 



         product 

====productid=======productName========SubCatid===== 
|  1  | p1   |  2  | 
|  2  | p2   |  1  | 
|  3  | p3   |  1  | 
|  4  | p4   |  2  | 

Теперь я хочу, чтобы мое приложение, как это, что если какой-либо из категории присутствовать в таблице подкатегорий как запись пользователь не может удалить эту категорию. Пользователь должен удалить его из таблицы подкатегорий, после чего Пользователь может удалить его из таблицы категорий. В то же время Пользователь также не может удалить запись из подкатегории, которая присутствует в таблице продуктов. Я пытался с Foreignkey, но я не могу понять, как правильно это решить. Пожалуйста, помогите мне в этом вопросе.

ответ

0

Вы должны использовать Foreign Keys с RESTRICT ссылочного варианта:

alter table `subcategory` add foreign key (`Catid`) references `category`(`Catid`) on update cascade on delete restrict 

Так что, если кто-нибудь попытается удалить раздел, который имеет подкатегории, MySQL будет запрещать что и вывод ошибку:

Cannot delete or update a parent row: a foreign key constraint fails 

Same вещь для продуктов таблица:

alter table `product` add foreign key (`SubCatid`) references `subcategory`(`SubCatid`) on update cascade on delete restrict 
+0

и добавить то же самое на товарный стол тоже? например, если я удаляю подкатегорию и она присутствует в таблице продуктов, ее также можно удалить? –

+0

О, вы уже ответили на мой вопрос. Благодарю. Принято –

Смежные вопросы