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