Оператор удаления SQL (где <Field>не в) - PullRequest
1 голос
/ 04 августа 2011

Как я могу удалить определенную строку в таблице, только если ее данные больше не используются другой таблицей?

Допустим, у меня есть таблица [schedule] и таблица [scheduletype]. Если определенный [тип расписания] не найден в поле [расписание]. [Тип] таблицы [расписание], он будет удален из таблицы [расписание].

Кстати, я использую SQL Server 2005.

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Ну, во-первых, вы, вероятно, должны установить ограничение внешнего ключа, чтобы гарантировать, что удаление не может произойти, если таблицы логически связаны. Подробнее здесь: http://msdn.microsoft.com/en-us/library/ms175464(v=SQL.90).aspx

Для удаления вы должны сделать это:

delete scheduletype 
where type not in (select type from schedule)
2 голосов
/ 04 августа 2011

Попробуйте это (при условии, что соответствующее поле называется id в schedule):

DELETE FROM scheduletype WHERE id NOT IN (select a.type FROM schedule a)
...