Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Чистка после удаления / 5 сообщений из 5, страница 1 из 1
06.01.2016, 20:00
    #39142833
G00dWINe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чистка после удаления
Итак, есть две связанные таблицы: компьютеры и помещения. В одном помещении может находиться несколько компьютеров.

Как сделать так, что при удалении ВСЕХ компьютеров из помещения, помещение тоже удалялось?

Иными словами, как провести проверку таблицы на наличие ссылок на неё в других таблицах (расширенный вариант, если несколько таблиц ссылаются на данную).
...
Рейтинг: 0 / 0
06.01.2016, 20:01
    #39142834
G00dWINe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чистка после удаления
Пардон, как провести не проверку таблицы, а проверку записи на наличие ссылок на неё с последующим удалением.
...
Рейтинг: 0 / 0
06.01.2016, 20:26
    #39142843
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чистка после удаления
Код: sql
1.
2.
3.
4.
5.
delete from master
where (select count(*) from child1 where master.id=child1.parent_id) = 0 
  and (select count(*) from child2 where master.id=child2.parent_id) = 0 
  ....
  and  (select count(*) from childN where master.id=childN.parent_id) = 0 



Либо задавай во всех детях внешний ключ с ON DELETE IGNORE. И тогда простой `delete from master` убьет строки на которые никто не ссылается, но пропустит те на которые есть хоть одна ссылка.
...
Рейтинг: 0 / 0
07.01.2016, 09:44
    #39142951
G00dWINe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чистка после удаления
White Owl
Код: sql
1.
2.
3.
4.
5.
delete from master
where (select count(*) from child1 where master.id=child1.parent_id) = 0 
  and (select count(*) from child2 where master.id=child2.parent_id) = 0 
  ....
  and  (select count(*) from childN where master.id=childN.parent_id) = 0 



Либо задавай во всех детях внешний ключ с ON DELETE IGNORE. И тогда простой `delete from master` убьет строки на которые никто не ссылается, но пропустит те на которые есть хоть одна ссылка.

Не понял, о каком внешнем ключе идет речь?
Внешний ключ есть только у мастер-таблицы, который ссылается на id дочерней таблицы.
...
Рейтинг: 0 / 0
07.01.2016, 19:21
    #39143097
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чистка после удаления
G00dWINeНе понял, о каком внешнем ключе идет речь?
Внешний ключ есть только у мастер-таблицы, который ссылается на id дочерней таблицы.Читать букварь
http://www.sql.ru/docs/sql/u_sql/ch19.shtml
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Чистка после удаления / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]