Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.015 c
3-75767
sav00
2003-02-03 11:57
2003.02.24
Печать DBGrid


1-76005
Aleksandr
2003-02-13 10:45
2003.02.24
Не могу сладить с ActionToolBar!


1-75871
Kventin
2003-02-13 20:54
2003.02.24
Как спрятать модальную форму?


1-75912
MasterYoda
2003-02-14 14:31
2003.02.24
Как сохранить информацию из нескольких StringGrid в файл ?


1-75999
nizar
2003-02-13 06:35
2003.02.24
Проверка на существование файла