В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Сообщение об ошибке, 1785 возникает при создании ограничения FOREIGN KEY, может привести к несколько путей каскадом

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:321843
Проблема
При создании ограничения FOREIGN KEY, может появиться следующее сообщение об ошибке:
Сервер: Сообщение 1785, уровень 16, состояние 1, строка 1Введение ограничения FOREIGN KEY «fk_two» в таблице «table2» может вызвать циклов или множественных каскадных путей. Укажите при УДАЛЕНИИ ДЕЙСТВИЙ или ON UPDATE NO ACTION или изменять другие ограничения FOREIGN KEY.Сервер: Сообщение 1750, уровень 16, состояние 1, строка 1Не удалось создать ограничение. Просмотреть предыдущие ошибки.
Причина
Появляется это сообщение об ошибке, так как в SQL Server таблицы не может появляться более одного раза в списке всех каскадных ссылочных действий, вызванных инструкции UPDATE или DELETE. Например дереве каскадных ссылочных действий только должен иметь один путь к определенной таблице каскадных ссылочных действий дерева.
Временное решение
Чтобы обойти эту проблему, не создать внешний ключ, в списке каскадных ссылочных действий более чем один путь к таблице.

Можно включить ссылочную целостность несколькими способами. Декларативная ссылочная целостность (DRI) является самым простым способом, но также наименее гибкий способ. Если требуется большая гибкость, но по-прежнему требуется высокая степень целостности, можно использовать триггеры.
Дополнительная информация
В следующем примере кода приведен пример генерирует сообщение об ошибке попытки создания ВНЕШНЕГО ключа.
Use tempdbgocreate table table1 (user_ID integer not null primary key, user_namechar(50) not null)gocreate table table2 (author_ID integer not null primary key, author_namechar(50) not null, lastModifiedBy integer not null, addedby integer notnull)goalter table table2 add constraint fk_one foreign key (lastModifiedby)references table1 (user_ID) on delete cascade on update cascadegoalter table table2 add constraint fk_two foreign key (addedby)references table1(user_ID) on delete no action on update cascadego--this fails with the error because it provides a second cascading path to table2.alter table table2 add constraint fk_two foreign key (addedby)references table1 (user_ID) on delete no action on update no actiongo-- this works.				

ССЫЛКИ

Дополнительные сведения содержатся в разделе «Каскадные ограничения ссылочной целостности» в электронной документации по SQL Server 2000.

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 321843 — последний просмотр: 06/08/2011 11:52:00 — редакция: 4.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbbug kbpending kbprb kbprogramming kbmt KB321843 KbMtru
Отзывы и предложения
nt.createElement("meta"); m.content = guid; m.name = "ms.dqid"; document.getElementsByTagName("head")[0].appendChild(m);