Mike V Baker
На первый взгляд кажется, что ваш Теннант и ваша аренда связаны родителем с ребенком соответственно. Первая мысль, которая у меня есть, - это никогда, никогда не удалять эти вещи. В какой-то момент вам захочется вернуться к ним. Сколько договоров аренды было расторгнуто в прошлом году? Сколько людей не выполнили свои обязательства по аренде? Сколько раз пользователь программы ошибался и вводил договор аренды, когда он не должен был этого делать? Нет... отметьте договор аренды как расторгнутый, просроченный, недействительный, что угодно. Не удаляйте его. Особенно при работе с клиентами, которые могут в какой-то момент позвонить и сказать: "Эй, я заплатил дважды в прошлом месяце и хочу вернуть деньги".
Однако! Если вы действительно хотите удалить его, то ваша хранимая процедура может удалить несколько строк в отдельных строках. Или вы можете создать связи в базу данных каскадное удаление и обновление каскада. Sql Server позаботится об очистке связанных записей, вы удалите только родительские. Каскад - это вариант внешнего ключа, по умолчанию это не действие, но вы можете изменить его на каскад.
Общий синтаксис
Изменить таблицу дочерней таблицы с Регистрация добавить ограничение [FK_ChildTable_ParentTable] внешний ключ(атрибутом parentId) ссылки ParentTable(атрибутом parentId) на обновление каскада на удаление каскад
Ваш конкретный случай
ALTER TABLE Lease WITH CHECK ADD CONSTRAINT [FK_Lease_Tennant] FOREIGN KEY(tennant_id) REFERENCES Tennant(tennant_id) ON UPDATE CASCADE ON DELETE CASCADE
Ваш ИП должен был бы только удалить Теннанта. Вы можете настроить аналогичные отношения для работы с другими таблицами, платежами и так далее. Я должен повторить первоначальную мысль, это не те вещи, которые вы должны удалить. Когда-нибудь они тебе снова понадобятся, обещаю. Кроме того, возвращаясь к каскадным отношениям, было много споров о том, ухудшает ли это производительность или нет. Если вы работаете с таблицами с сотнями тысяч записей, то следует соблюдать осторожность.
[Обновление] я чуть не забыл упомянуть. Если у вас есть настроенный внешний ключ, который связывает арендатора с арендой, а аренда связывается с арендатором *без настройки каскада, то вы не можете сначала удалить родительскую запись. Вы должны удалить договор аренды, а затем вы можете удалить арендатора. Это связано с тем, что ограничение в аренде требует присутствия соответствующего арендатора.
ХТХ,
Майк