За последние 24 часа нас посетили 17619 программистов и 1292 робота. Сейчас ищут 1948 программистов ...

Удаление записей

Тема в разделе "MSSQL", создана пользователем Michael, 15 авг 2007.

  1. Michael

    Michael Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    54
    Симпатии:
    0
    Есть три таблицы вида:

    table1:
    uid | value

    table2:
    uid | tid | value

    table3:
    uid | xid | value

    Таблицы table1 и table2 связаны как table1.uid=table2.tid "один ко многим" (т.е. одной записи из table1 может соответствовать несколько записей из table2, а может и ни одной).
    Таблицы table2 и table3 связаны как table2.uid=table3.xid "один ко многим" (т.е. одной записи из table2 может соответствовать несколько записей из table3, а может и ни одной).

    То есть, получается вот такая древовидная структура.

    Вопрос: можно ли одним запросом удалить запись из table1 с конкретным uid, а также соответствующие ей записи из table2 (и соответствующие им записи из table3)? Если да, то как?
     
  2. Michael

    Michael Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    54
    Симпатии:
    0
    Неужели никто не знает?
    Ну, хотя бы, в какую сторону копать?
     
  3. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    одним - не должно. Нарушается связность, удаляешь чего уже нет. Эта логика на тебе, а не движке.
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ответ: можно, но для этого надоь юзать InnoDB и внешние ключи. тогда удаление будет каскадным.

    {минуту спустя]
    OOPS! мог ступить. Вечером потестю...
     
  5. Anonymous

    Anonymous Guest

    Ага, Оракл - круче всех. %) Точно умеет. ))

    ЗЫ. Можно на триггер повесить, если MySQL 5
     
  6. isDev

    isDev Активный пользователь

    С нами с:
    14 окт 2007
    Сообщения:
    4
    Симпатии:
    0
    А почему заджоинить не можешь?

    DELETE tblName FROM tblName INNER ...

    --------------
    начинающие php программисты желающие участвовать в реальных проектах пишем мне: issproject@gmail.com
     
  7. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Если б была MySQL, то и триггера не надо:
    [sql]delete from table1, table2, table3 using table1, table2, table3 where table1.uid=5 and table2.tid=table1.uid and table3.xid=table2.uid[/sql]