Текущий архив: 2003.02.24;
Скачать: CL | DM;
Вниз
Delete from table Найти похожие ветки
← →
Романов Р.В. © (2003-02-05 10:54) [0]Можно ли в одном SQL запросе удалить записи из нескольких таблиц? Если можно, то напишите простой примерчик пожалуйста.
← →
passm © (2003-02-05 11:02) [1]Романов Р.В. © (05.02.03 10:54)> Стандартно нельзя. Только через скрипт.
← →
Романов Р.В. © (2003-02-05 11:05) [2]Спасибо и на этом.
← →
Johnmen © (2003-02-05 11:06) [3]Нет
← →
MsGuns © (2003-02-05 11:58) [4]В Парадоксе тоже нельзя удалить (изменить/вставить) в более чем одной таблице ОДНИМ ЗАПРОСОМ. С какой стати это будет можно в Local SQL ? Если надо ОДНОВРЕМЕННО (в смысле логически за один цикл программы, например) удалить записи из неск. таблиц, как, допустим в случае удаления записи-"родителя" и ее "детей", то делается это или TDataSet.Delete поочередно из каждой таблицы, или двумя ПОСЛЕДОВАТЕЛЬНО выполняемыми запросами (сначала на детале, затем на мастере). Если данные на SQL-сервере, то такие запросы объединяют в одну транзакцию, которую и выполняют с последующим подтверждением (commit) или откатом (rollback)
← →
Романов Р.В. © (2003-02-05 12:56) [5]Хорошо тогда такая задача. Имеем таблицы Города, Клиенты, Грузы, Оплата груза.
При удалени груза пишем 2 запроса
delete
from Оплата груза
where IdГруза = 16(для примера)
delete
from Грузы
where IdГруза = 16
При удалении Клиента нужно удалить все его грузы и информацию об их оплате. Получается уже 3 запроса
delete
from Оплата груза
where IdГруза in
(select IdГруза
from Грузы
where IdКлиента = 23(для примера))
и второй запрос
delete
from Грузы
where IdКлиента = 23
delete
from Клиенты
where IdКлиента = 23
Если удаляем город, то нужно удалить всех клиентов 3 запроса и все грузы 3 и сам город. Итого 7 запросов.
Получается какая - то геометрическая прогрессия, точнее факториал :(. Может как то можно оптимизировать все это что бы не писать столько запросов?
← →
passm © (2003-02-05 13:47) [6]Романов Р.В. © (05.02.03 12:56)> Насколько я помню, в Paradox"е можно объявлять внешние ссылки с каскадным удалением...
← →
Ламер (2003-02-05 13:51) [7]:passm
А как через скрипт?
← →
passm © (2003-02-05 13:56) [8]Ламер (05.02.03 13:51)> В Rx library есть TSQLScript. Позволяет выполнить серию запросов, разделенных терминаторным символом (по умолчанию "/").
← →
Романов Р.В. © (2003-02-05 14:11) [9]
> внешние ссылки с каскадным удалением
Ни разу не слышал про это. В help"е где нибуть написано? Они объявляются при создании структуры таблиц в Database Desctop?
← →
Романов Р.В. © (2003-02-05 14:19) [10]
> В Rx library есть TSQLScript
Ценная весчь. Спасибо.
← →
VAleksey © (2003-02-05 14:31) [11]
> Романов Р.В. © (05.02.03 14:11)
>
> > внешние ссылки с каскадным удалением
Да написано - то написано, да только не работает это.
← →
Романов Р.В. © (2003-02-05 14:35) [12]Не работает и @рен с ними. Тут и так все пугают что Paradox на каждом шагу падает. Я думаю надежность от них бы не увеличилась.
Страницы: 1 вся ветка
Текущий архив: 2003.02.24;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.012 c