mysql Удаление дочерних категорий из базы

Discussion in 'PHP' started by antras2007, 6 Nov 2014.

  1. antras2007

    antras2007 New Member

    Joined:
    4 Jul 2013
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте!!! Подскажите пожалуйста кто знает. Есть таблица categories в ней столбцы id, category, parent_category. Как сделать так с помощь базы что бы при удалении родительской категории удалялись все дочерние.

    Таблица выглядит так что бы было нагляднее.
    id category parent_category
    1 Компьютеры 0
    2 HP 1
    3 Lenovo 1
    4 Принтеры 0
    5 Xerox 4
    и т.д.

    родительской является та категория у которой parent_category = 0;

    Спасибо!!!
     
  2. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    Например удаляем родителя "1".
    DELETE FROM tbl WHERE id = 1 OR parent_category = 1;
     
  3. antras2007

    antras2007 New Member

    Joined:
    4 Jul 2013
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    Не совсем так. Что бы при удалении родительской категории дочерние удалялись сами, типо как вторичный ключ если это были бы две таблица то в одной id был бы первичным ключем а во второй parent_category вторичным ключем и при удалении id - parent_category удаляется каскадом. Это не сложно сделать когда таблицы разные, а вот когда в одной таблице то вторичный ключ не прокатывает.
     
  4. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    Каскадирование с FOREIGN KEY в пределах одной таблицы создать не возможно. Это должны быть разные таблицы. FOREIGN KEY он потому так и называется, что ссылается на другую таблицу. Сделайте в 2 таблицы InnoDB и будет работать.
     
Loading...
Similar Threads - mysql Удаление дочерних
  1. GAiN
    Replies:
    3
    Views:
    7,922