Скажем, вы удаляете пользователя.Это заставляет вас удалять их CommentMentions
через userID
в таблице.
Но это также заставляет вас удалять комментарии, которые они создали, что, в свою очередь, означает, что мы должныудалить CommentMentions
через CommentId
.
Два различных каскадных пути, которые приводят к попыткам удаления в CommentMentions
.
Цикла дляэтот.Ты прав.SQL Server использует одно сообщение для покрытия двух разных сценариев, но также могут быть сценарии, в которых применяются обе части сообщения do .
У вас будет цикл для CreatedByUserId
иностранногоключ, если вы пытались применить к нему каскадные удаления.
Это легче всего увидеть, посмотрев на диаграмму.Выберите направление для ввода внешних ключей - либо всегда к ключу, либо всегда к ... другому концу 1 .
Если вы можете найти два разных маршрута между двумя таблицами, используя любую изэти FK, то у вас потенциально есть несколько каскадных путей, поэтому вы не можете иметь каскадное удаление на всех FK в этих путях.Если вы можете найти маршрут обратно к той же таблице, у вас потенциально могут быть циклы, поэтому вы не можете иметь каскадное удаление на всех FK этого пути.
1 Я никогда не понимал, что должен означать другой конец этих строк.Это ссылка на цепочку?Символ бесконечности?Что-то еще?