23:35

Пропускай все через сердце
Добрый вечер. Есть следующий вопрос по БД. (MySQL, InnoDB таблицы)

Есть 3 таблицы. Условно скажем так:

1. table1
-table1_id
-...

2. table2
-table2_id
-..

3. table3
-table3_id
-t1
-t2

Думаю понятно, что table1_id, table2_id - первичные ключи, а t1,t2 - внешние.
При настройке внешнего ключа стоит каскадное обновление и удаление данных.

Что надо: При удалении записи из первой таблицы - удалить все связанные с ней записи в третьей таблице. При это связанные данные из таблицы 2- не удалять.
При удалении записи из второй таблицы - удалить все связанные с ней записи в третьей таблице. При это связанные данные из таблицы 1- не удалять.

Что получается: При удалении записи из первой таблицы удаляются все связанные с ней записи из третьей таблицы, а также запись из второй таблицы.
При удалении записи из второй таблицы удаляются все связанные с ней записи из третьей таблицы, а также запись из первой таблицы.

Надеюсь, идея понятна. Как решить проблему? Или только несколько запросов делать?

@темы: База данных

Комментарии
24.04.2012 в 04:20

Ну, пробьешь ты головой стену. И что ты будешь делать в соседней камере?
gooogle "delete on cascade"