ребенка У меня есть две таблицы: Родитель, который имеет первичный ключ (ParentID) и некоторые другие поля типа VARCHAR (50), и ребенок, который выглядит следующим образом:при удалении каскада удаления всей таблицы
childID, primary key
parentID, foreign key references Parent (parentID)
otherID, foreign key to another table
- Если я удалю строку из Ребенка, не проблема.
- Если я удалю строку из родителя, я получаю ошибку ограничения внешнего ключа для ребенка - хорошо, это правильно.
Теперь я могу изменить отношение к ключу ParentID и набору удалить каскад вместо Нет действий (я использую 2008 студии сервера, щелкнув правую кнопку мыши на столбце, выберите команду Изменить, а затем правая кнопка мыши на таблицу и выберите «Отношения». Затем я выбираю отношения для таблиц «Родительский/дочерний» и открываю раздел «Вставка/обновление» в разделе «Дизайнер таблиц»)
Если я удалю строку из Ребенка, опять же, никаких проблем. Если я удалю строку из родителя, ВСЕ строки дочерней таблицы удаляются, даже через большинство из них указывают на другие родительские идентификаторы.
Я унаследовал эту БД и все ее таблицы. Есть ли какие-то настройки свойств, которые мне не хватает? Из того, что я прочитал, каскадное удаление должно ТОЛЬКО удалять дочерние строки, указывающие на единственный родительский идентификатор, который я удалял из родителя.
Спасибо.
Бен
Да, удаление каскада удаляет только дочерние строки, связанные с родителем. Лучше всего предположить, что вы не определили правильность удаления каскада. Проверьте это снова. – pavanred