Удаление записей из таблиц одним запросом

Sergios

Новичок
Доброй ночи, господа.

Кто подскажет как [и можно ли вообще] удалить записи сразу из нескольких таблиц в одном SQL-запросе? Грубо говоря, есть 2 логически связанные таблицы ("Клиент" и "Заказ" и у каждого клиента может быть несколько заказов), и при удалении "Клиента" надо удалить еще и его "Заказы". Тривиальное решение: 1-ым запросом выбрать ID заказов требуемого клиента, 2-ым и 3-им удалить клиента и его заказы по сохраненным ранее ID заказов.

А можно ли это сделать в одном запросе, чтобы как-то компактнее все это смотрелось...?
 

Sergios

Новичок
CREATE TABLE LESSON(
ID INTEGER NOT NULL,
NAME VARCHAR(80),
PRIMARY KEY (ID)
);

CREATE TABLE LESSON_TYPE(
LESSON_ID INTEGER NOT NULL ,
CHASI_NEDELIA INTEGER NOT NULL,
ID_VID_LESSON INTEGER unique NOT NULL,
FOREIGN KEY (LESSON_ID) REFERENCES LESSON(ID),
PRIMARY KEY (LESSON_ID,ID_VID_LESSON)
);

CREATE TABLE TMIMA(
NAME_TMIMATOS VARCHAR(20),
ID_TMIMATOS INTEGER NOT NULL,
KOD_MATHIMATOS INTEGER NOT NULL,
FOREIGN KEY (KOD_MATHIMATOS) REFERENCES LESSON_TYPE(ID_VID_LESSON)
ON DELETE CASCADE,
PRIMARY KEY (ID_TMIMATOS)
);

Пишу
DELETE
FROM LESSON_TYPE
WHERE LESSON_TYPE..LESSON_ID = IDIN;

DELETE
FROM LESSON
WHERE LESSON.ID = IDIN ;

Как удалить записи в table TMIMA?
 

Fedor_A_Nohrin

Новичок
Доброй ночи, господа.
Кто подскажет как [и можно ли вообще] удалить записи сразу из нескольких таблиц в одном SQL-запросе?
...
А можно ли это сделать в одном запросе, чтобы как-то компактнее все это смотрелось...?
Почитайте про триггеры! Написав их правильно, удалите все связанные данные из нужных таблиц одним запросом!
 
Сверху