2010-10-28 19 views
0

У меня есть куча данных в таблице, которая служит в качестве родителя (первичный ключ в отношении внешних ключей) к нескольким другим таблицам. Я в основном хочу пройти через эту таблицу и попытаться удалить записи, у которых нет детей. Я уже удалил детей, поэтому есть родители, которые бездетны.SQL Server: попробуйте удалить

Если запись может быть удалена, удалите ее, в противном случае перейдите к следующей записи и не покажите мне, что не может удалить ошибку.

Это не какая-то производственная необходимость, я просто возился с некоторым тестовым кодом и удалял некоторых детей, теперь я хочу удалить их печальных родителей.

Это может быть сделано в sql или C# linq stuff. Я в основном просто хочу очистить свои нерелевантные данные.

+0

Данные эвтаназии нравственно сомнительны. Я рекомендую сопоставить ваших печальных родителей с сиротами. –

+0

Нет сирот, которые нарушали бы ограничение внешнего ключа. Если только жизнь принудительно ограничивает внешние ключи. – Shawn

ответ

3

Вы всегда можете попробовать запрос как

DELETE FROM ... WHERE NOT EXISTS (... 
2

Вы можете пользователем внешнее соединение - позволяет сказать, что вы мастер и ребенок присоединения по идентификатору

delete m 
from master m 
left outer join child c 
on m.id = c.id 
where c.id is null 

Что это делает присоединиться все записи мастера с дочерним элементом и где ребенок не существует, он помещает нули. Вам просто нужно выбрать те, где ребенок равен нулю

Смежные вопросы